返回指定排名范围内的 member 命令格式:zrange/zrevrange key start end [withscores]
先看第一个:添加 member。
比如我们把示意图中的数据添加到到有序集合里面去,语法是这样的:
zadd key score member [score member ...]
意思是可以一次添加一对或者多对 score-member,比如下面这两个命令:
zadd sport:ranking:20210227 10026 why
zadd sport:ranking:20210227 10158 mx 30169 les 48858 skr 66079 jay
执行之后,返回的数字代表添加成功的 member 个数。
我用专门操作 Redis 的 RDM 可视化工具来查看插入的数据,和我自己画的示意图相差无几:
接着看第二个:增加 member 的 score
微信运动排行榜的数据是实时更新的。
目前 member 为 why 的步数是 10268,假设我吃完晚饭出门跑步去了,又跑了 5000 步。
这时得更新我的步数,就用 zincrby 命令,语法是这样的:
zincrby key increment member
对应上面场景的执行命令是这样的:
zincrby sport:ranking:20210227 5000 why
执行完成后,会返回 why 的步数,可以看到从 10026 变成了 15026 :
同时由于我的步数增加,按照 score 倒序,也导致了排序的变化:
所以我们只需要更新 score 就行了,至于排名的变化,Redis 会帮忙保证的。
然后看第三个命令:获取 member 排名
语法是这样的:
获取 member 排名:zrank key member