go-redis官网🔗https://github.com/redis/go-redis
连接
import (
"fmt"
"github.com/go-redis/redis"
)
var rdb *redis.Client
func initRedis() (err error) {
// Initialize the Redis client
rdb = redis.NewClient(&redis.Options{
Addr: "localhost:6379", // 连接到本地的 Redis 服务器
Password: "", // redis密码
DB: 0, // 默认数据库
PoolSize: 100, // 设置连接池大小
})
_, err = rdb.Ping().Result() // 测试连接
return err
}
func main() {
if err := initRedis(); err != nil {
panic(err)
}
fmt.Println("Redis client initialized successfully")
defer rdb.Close()
}
常用操作
Set
& Get
func setTest() {
//func (c *redis.cmdable) Set(key string, value interface{}, expiration time.Duration) *redis.StatusCmd
// key: 键名 value: 键值 expiration: 过期时间 0表示不过期
err := rdb.Set("name", "tom", 0).Err() // 设置键值对,返回错误
rdb.Set("age", 18, 0) // 设置键值对,不返回错误
if err != nil {
fmt.Println("Error:", err)
return
} else {
fmt.Println("key set successfully")
}
}
func getTest() {
val, err := rdb.Get("name").Result() // 获取键值对,返回错误
val_age := rdb.Get("age").Val() // 获取键值对,不返回错误,若键不存在则返回空字符串
if err == redis.Nil {
fmt.Println("key does not exist")
} else if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("key:", val)
}
fmt.Println("age:", val_age)
}
HSet
& HGet
func hashSetTest() {
//func (c *redis.cmdable) HSet(key string, values ...interface{}) *redis.IntCmd
// key: 键名 field: 字段名 value: 字段值
err := rdb.HSet("user", "name", "tom").Err() // 设置哈希表的键值对,返回错误
rdb.HSet("user", "age", 18) // 设置哈希表的键值对,不返回错误
if err != nil {
fmt.Println("Error:", err)
return
} else {
fmt.Println("key set successfully")
}
}
func hashGetTest() {
//func (c *redis.cmdable) HGet(key, field string) *redis.StringCmd
// key: 键名 field: 字段名
val, err := rdb.HGet("user", "name").Result() // 获取哈希表的键值对,返回错误
val_age := rdb.HGet("user", "age").Val() // 获取哈希表的键值对,不返回错误,若键不存在则返回空字符串
if err == redis.Nil {
fmt.Println("key does not exist")
} else if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("key:", val)
}
fmt.Println("age:", val_age)
}
ZsetTest
& ZgetTest
func ZsetTest() {
//func (c *redis.cmdable) ZAdd(key string, members ...Z) *redis.IntCmd
// key: 键名 member: 成员 score: 分数
err := rdb.ZAdd("zset", redis.Z{Score: 1, Member: "tom"}).Err() // 设置有序集合的键值对,返回错误
rdb.ZAdd("zset", redis.Z{Score: 2, Member: "jerry"}) // 设置有序集合的键值对,不返回错误
if err != nil {
fmt.Println("Error:", err)
return
} else {
fmt.Println("key set successfully")
}
}
func ZgetTest() {
//func (c *redis.cmdable) ZRange(key string, start, stop int64) *redis.StringSliceCmd
// key: 键名 start: 起始索引 stop: 结束索引,0表示第一个元素,-1表示最后一个元素
val, err := rdb.ZRange("zset", 0, -1).Result() // 获取有序集合的键值对,返回错误
if err == redis.Nil {
fmt.Println("key does not exist")
} else if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("key:", val)
}
}
SsetTest
& SgetTest
func SsetTest() {
//func (c *redis.cmdable) SAdd(key string, members ...interface{}) *redis.IntCmd
// key: 键名 member: 成员
err := rdb.SAdd("set", "tom").Err() // 设置集合的键值对,返回错误
rdb.SAdd("set", "jerry") // 设置集合的键值对,不返回错误
if err != nil {
fmt.Println("Error:", err)
return
} else {
fmt.Println("key set successfully")
}
}
func SgetTest() {
//func (c *redis.cmdable) SMembers(key string) *redis.StringSliceCmd
// key: 键名
val, err := rdb.SMembers("set").Result() // 获取集合的键值对,返回错误
if err == redis.Nil {
fmt.Println("key does not exist")
} else if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("key:", val)
}
}
Incr
func incrTest() {
//func (c *redis.cmdable) Incr(key string) *redis.IntCmd
// key: 键名
val, err := rdb.Incr("counter").Result() // 自增1,返回错误
if err == redis.Nil {
fmt.Println("key does not exist")
} else if err != nil {
fmt.Println("Error:", err)
} else {
fmt.Println("key:", val)
}
}