业务是这样的,对每一个活动做一个 zset 保存参与用户的 id 和参与时间
判断的时候,如果返回 null,不知道是 key 被删了还是没有此 member,对于这两个情况后续操作不一样
目前只得全部套上了 pipeline 先判断下 exist 这个 key
用 redis-cli 的时候似乎对这两种情况也都是返回的 nil
你们平时有这种情况吗,咋解决的呢。。。
1
charles2java 2018-12-09 22:25:46 +08:00 via Android
那就不要删除 key,设置为默认值?
|
2
hbpeng 2018-12-10 09:11:00 +08:00 via iPhone
pipeline 没办法解决吧 pipeline 里面第二条命令是没办法依赖第一条的结果的 感觉你这个只能用 lua
|
3
br00k 2018-12-10 09:11:54 +08:00
如果没有数据的我的操作是初始化一条数据进去。取的时候把这条过滤掉。
|
4
server 2018-12-10 12:05:46 +08:00
小哥,入库前不检查下用户吗?
|
5
myzWILLmake 2018-12-10 14:51:20 +08:00
不太清楚你使用 zset 是用来做什么业务的,但是可能对于 zset 的理解有些偏差。zset 的数据结构为跳表,单个数据为跳表中的一个节点。删除操作的话会将这个节点从这个跳表中移出并且释放掉。所以对于 zset 已经删除的节点就是不存在的数据,当然不会查到。
|
6
zhyzhy OP @hbpeng 是没法依赖第一条,所以 key exist 和 member value 的结果全部捞出来了,key 不存在就执行不存在的逻辑,不去查看 member 的结果了
|
7
zhyzhy OP @myzWILLmake = = 没看明白。。。我的意思是就比如 zrank myzset user1 这个命令,返回了 nil,我不知道到底是没有这个 zset,还是 zset 中没有 user1 这个 member
|