概念
有序集合在集合的基础上,为每个元素关联了一个数值(可以代表重要程度,或对数值赋予其他的意义)。
这使得我们可以根据这个数值,对集合内的元素进行操作。(元素的数值可以相同)。
常用命令
添加元素
ZADD chengji 10 eric 5 david 15 lio
发现David的分数录错了,不是5分,是15分。怎么改呢?
ZADD chengji 15 david
删除集合中的元素:
ZREM chengji eric
获取元素分数
ZSCORE chengji eric //10
获取前几名
我现在想按照分数,获取前2名分数高的人:ZREVRANGE 就可
我现在想按照分数,获取后2名分数高的人:ZRANGE 就可
ZREVRANGE chengji 0 1
ZRANGE chengji 0 1
ZRANGE可以类比于List类型的LRANGE
ZRANGE与ZREVRANGE的区别是:
ZRANGE按照元素分数从小到大排序
ZREVRANGE按照元素分数从大到小排序
获取指定分数范围内的人
上面是获得排名前几的人。
我想获取指定分数范围内的人,怎么办呢?
比如我想获取1-11(不包含11)的人
ZRANGEBYSCORE chengji 1 (11
我想获取分数1-15内的人(包含15)
ZRANGEBYSCORE chengji 1 15
当然,范围可以是无穷大(+inf正无穷 -inf负无穷)
我要获取 1分以上 的人
ZRANGEBYSCORE chengji 1 +inf
加分、减分操作
给eric加6分
ZINCRBY chengji 6 eric //16
给eric减6分
ZINCRBY chengji -6 eric //10
获得有序集合中元素的数量
ZCARD chengji //3
有序集合的应用场景
通过有序集合,我们很容易实现:
按照文章访问量来排序文章。
文章的访问量作为score。
只要使用ZRANGE或者ZREVRANGE就可以了。
很方便。
更多精彩,请关注公众号“聊聊代码”,让我们一起聊聊“左手代码右手诗”的事儿。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。