前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >你所要知道的redis客户端返回值知识点

你所要知道的redis客户端返回值知识点

作者头像
公众号-利志分享
发布2022-04-25 09:22:20
5950
发布2022-04-25 09:22:20
举报
文章被收录于专栏:利志分享

redis的client我们最常用的库是github.com/go-redis/redis,他拥有着12w的star。我这里来讲讲这个库的使用,总结一些使用的规则。

首先我们来看下string的使用

代码语言:javascript
复制
//这里是连接对象,
clientRedisConn := New("127.0.0.1:6379", "auth1", 19)
//设置一个key
res1, err := clientRedisConn.Set("xxx", "xxx", 0).Result()
fmt.Println("1", res1, "1", err)
//获取上面设置的key:xxx
res2, err := clientRedisConn.Get("xxx").Result()
fmt.Println("2", res2, "2", err)
//这里我们读取一个不存在的key:xxx1
res3, err := clientRedisConn.Get("xxx1").Result()
fmt.Println("3", res3, "3", err)

来看下返回的结果,如下:

代码语言:javascript
复制
1 OK 1 <nil>
2 xxx 2 <nil>
3  3 redis: nil

下面我们来看下hmap的使用

代码语言:javascript
复制
//设置一个hmap,key:xxx3,键为xxx
res6, err := clientRedisConn.HSet("xxx3", "xxx", 0).Result()
fmt.Println("4", res6, "4", err)
//获取hmap为xxx2的一个键为xxx的值
res4, err := clientRedisConn.HGet("xxx2", "xxx").Result()
fmt.Println("5", res4, "5", err)
//获取hmap为xxx2的键值对
res5, err := clientRedisConn.HGetAll("xxx2").Result()
fmt.Println("6", res5, "6", err)
//获取hmap为xxx3的一个键为sws的值
res7, err := clientRedisConn.HGet("xxx3", "sws").Result()
fmt.Println("7", res7, "7", err)
//获取hmap为xxx3的键值对
res8, err := clientRedisConn.HGetAll("xxx3").Result()
fmt.Println("8", res8, "8", err)

返回的结构如下:

代码语言:javascript
复制
4 false 4 <nil>
5  5 redis: nil
6 map[] 6 <nil>
7  7 redis: nil
8 map[xxx:0] 8 <nil>

下面我们再来看下set的使用

代码语言:javascript
复制
//获取集合xxx6的值
res9, err := clientRedisConn.SMembers("xxx6").Result()
fmt.Println("9", res9, "9", err)
//为集合xxx7添加值xxx
res10, err := clientRedisConn.SAdd("xxx7", "xxx").Result()
fmt.Println("10", res10, "10", err)
//判断集合xxx7里面是否包含xx555
res11, err := clientRedisConn.SIsMember("xxx7", "xx555").Result()
fmt.Println("11", res11, "11", err)

然后我们看下结果:

代码语言:javascript
复制
9 [] 9 <nil>
10 0 10 <nil>
11 false 11 <nil>

从上面的结果我们有没有看出什么规律呢?如果还没有看出来,我们在来看下zset,和list的使用。

代码语言:javascript
复制
// 获取集合xxx12的所有的值
res12, err := clientRedisConn.ZRange("xxx12", 0, -1).Result()
fmt.Println("12", res12, "12", err)
// 弹出来队列xxx12的一个值
res13, err := clientRedisConn.LPop("xxx12").Result()
fmt.Println("13", res13, "13", err)
// 从list获取所有的值。
res14, err := clientRedisConn.LRange("xxx122", 0, -1).Result()
fmt.Println("14", res14, "14", err)

返回结果如下:

代码语言:javascript
复制
12 [] 12 <nil>
13  13 redis: nil
14 [] 14 <nil>

好了,到这里有没有看出来什么规律呢?下面我们来看下结论。

总结:

1:如果读取数据返回值是一个值的之后,找不到的话会返回redis.Nil错误

2:如果读取返回的是slice或者map的时候,读不到数据也不会返回错误,而是返回一个长度为0的slice或者一个长度为0的map。

备:目前我们常用的mysql的客户端库gorm,关于数据的读取也是有相同的规则。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 利志分享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档