1

概念

有序集合在集合的基础上,为每个元素关联了一个数值(可以代表重要程度,或对数值赋予其他的意义)。
这使得我们可以根据这个数值,对集合内的元素进行操作。(元素的数值可以相同)。

常用命令

添加元素

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就可以了。
很方便。

更多精彩,请关注公众号“聊聊代码”,让我们一起聊聊“左手代码右手诗”的事儿。
图片描述


zilu
1.3k 声望175 粉丝