安装
go get github.com/redis/go-redis/v9
go get -u github.com/gin-gonic/gin
redis封装
package config
import (
"context"
"errors"
"fmt"
"time"
"github.com/redis/go-redis/v9"
)
var ctx = context.Background()
var rdb *redis.Client
func init() {
rdb = redis.NewClient(&redis.Options{
Addr: "localhost:6379", // Redis 服务器地址
Password: "", // 没有密码则留空
DB: 0, // 使用默认数据库
// PoolSize: 1000, // 连接池最大连接数量
// MinIdleConns: 100, // 连接池保持的最小空闲连接数
// ConnMaxIdleTime: 10 * time.Minute, //最大空闲时间,超过这个时间将被关闭
})
// 测试连接
pong, err := rdb.Ping(ctx).Result()
if err != nil {
fmt.Println("无法连接到 Redis:", err)
return
}
fmt.Println("连接成功:", pong)
}
// 存储
func SetKey(key, value string, ex int64) error {
err := rdb.Set(ctx, key, value, time.Duration(ex)*time.Second).Err()
if err != nil {
//fmt.Println("设置键失败:", err)
return err
}
return nil
}
// 获取
func GetKey(key string) (string, error) {
val, err := rdb.Get(ctx, key).Result()
if err == redis.Nil {
//fmt.Println("键不存在:", key)
err = errors.New("key does not exists")
return "", err
} else if err != nil {
//fmt.Println("获取键失败:", err)
return "", err
}
return val, nil
}
// 删除
func DelKey(key string) error {
err := rdb.Del(ctx, key).Err()
if err != nil {
//fmt.Println("删除失败:", err)
return err
}
return nil
}
使用
package main
import (
"fmt"
"godb/config"
"github.com/gin-gonic/gin"
)
func main() {
gin.SetMode(gin.ReleaseMode) // 设置为 Release 模式
r := gin.Default()
//redis使用
r.GET("/sz", func(c *gin.Context) {
// 设置键值
err := config.SetKey("name", "Go Redis", 60)
if err != nil {
fmt.Println("设置键失败:", err)
}
})
r.GET("/hq", func(c *gin.Context) {
// 获取键值
val, err := config.GetKey("name")
if err != nil {
fmt.Println("获取键失败:", err)
return
}
//fmt.Println(val)
c.JSON(200, val)
})
r.GET("/sc", func(c *gin.Context) {
// 获取键值
err := config.DelKey("name")
if err != nil {
fmt.Println("删除失败:", err)
}
})
r.Run()
}
代码示例
gin封装redis: gin封装redishttps://gitee.com/alsark/gin-encapsulation-redis.git