Golang之go-redis基本使用
Redis作为缓存界的天花板对多种语言都提供了支持,关于Redis的安装本文就不再赘述了,大家可以参考Redis的官方文档进行安装redis.io/, 本文主要介绍如何通过go-redis这个模块对Redis的5种基础数据类型进行操作。
连接
通过下面的代码进行Redis的连接,拿到返回的上下文以及DB后对Redis进行数据的操作。
var ctx = context.Background()
var rdb = redis.NewClient(&redis.Options{ Addr: "localhost:6379", })
string
字符串,常用于简单key-value数据的存储,查找
rdb.Set(ctx, "key", "value", 0)
result, err := rdb.Get(ctx, "key").Result()
if err != nil {
panic(err)
}
fmt.Println("key", result)
set
集合,可用于数据的去重
addCmd := rdb.SAdd(ctx, "set", "s1", "s2", "s3")
fmt.Println(addCmd)
stringSliceCmd := rdb.SMembers(ctx, "set")
for _,v := range stringSliceCmd.Val() {
fmt.Println(v)
}
zset
有序集合,可用于排行榜
intCmd := rdb.ZAdd(ctx, "zset",
&redis.Z{Score: 10, Member: "GetcharZp"},
&redis.Z{Score: 50, Member: "B-zero"},
&redis.Z{Score: 20, Member: "GetcharMmc"})
fmt.Println(intCmd)
zRange := rdb.ZRange(ctx, "zset", 0, 10)
for _, v := range zRange.Val() {
fmt.Println(v)
}
hash
可用于存储复杂的key-value键值对
intCmd := rdb.HSet(ctx, "hash", map[string]string{"k1": "v1", "k2": "v2", "k3": "v3"})
fmt.Println(intCmd)
// 通过指定map中的key获取值
getOne := rdb.HGet(ctx, "hash", "k1")
fmt.Println(getOne.Val())
// 获取所有的key-value键值对
all := rdb.HGetAll(ctx, "hash")
for key, value := range all.Val() {
fmt.Println("key --> ", key, " value --> ", value)
}
list
列表,灵活使用lpush\lpop\rpush\rpop等,可使该结构具有队列、栈的功能
intCmd := rdb.LPush(ctx, "list", "l1", "l2", "l3")
fmt.Println(intCmd)
lRange := rdb.LRange(ctx, "list", 0, 3) // 从最左边开始取数据
for _, v := range lRange.Val() {
fmt.Println(v)
}
转载自:https://juejin.cn/post/7101286398388338695