go-redis官网🔗https://github.com/redis/go-redis
连接
import ("fmt""github.com/go-redis/redis"
)var rdb *redis.Clientfunc initRedis() (err error) {// Initialize the Redis clientrdb = 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)}
}