Redis | Redis 有序集合相关命令

目录

常用 Sorted Sets 相关命令

1、zadd

2、zcard

3、zcount

4、zincrby

5、zpopmax

6、zpopmin

7、zrange

8、zrevrange

9、zrangebylex

10、zrevrangebylex

11、zlexcount

12、zrangebyscore

13、zrevrangebyscore

14、zrank

15、zrevrank

16、zrem

17、zremrangebyrank

18、zremrangebyscore

19、zremrangebylex

20、zscore

21、zinterstore

22、zunionstore

总结


        Redis 支持多种数据结构,比如 字符串、列表、集合、有序集合 和 哈希 等数据结构。本次我整理了关于 有序集合 相关的命令,也就是关于 Sorted Sets 相关的命令,如下图。

图片

        上图中用红色圈中的部分,就是关于 有序集合 相关的命令。如果想要在 Redis 中查看相关的命令可以使用 help 命令来进行查看,命令如下。 

127.0.0.1:6379> help @sorted_set

        在按下回车后,可以看到 Sorted Sets 相关命令的说明,如下图。

图片

        图中就是部分关于 Sorted Sets 相关的部分命令。对于 Sorted Sets 有另外一个名称 —— zsets 或 zset

常用 Sorted Sets 相关命令

        Sorted Sets 数据类型是 Key 对应的 Value 的类型,在 Redis 中所有的 Key 都是字符串类型,所谓的数据类型表示的是 Value 的类型。在 Sorted Sets 中的 Value 是一个有序集合,集合是有序的(上篇文章的 Sets 是无序的),且是不可以重复的,有序集合包含两部分,分别是成员(member)和分数(score)两部分。

        为了大家能够直接复制命令进行测试,下面我就不截图了。

1、zadd

        该命令的作用是:添加一个或者多个带分数的成员到集合里,命令格式如下: 

zadd key [NX|XX] [CH] [INCR] score member [score member ...]

        例子如下:

127.0.0.1:6379> zadd language 100 java 200 c++ 50 python 150 ruby
(integer) 4

        在命令中,language 是 key其中 java、c++、 python 和 ruby 是 member,也就是成员它们前面的数值是 score,也就是分数。从返回值可以看出,zadd 命令增加了 4 个元素。

        我们来查看一下用 zadd 添加的元素:

127.0.0.1:6379> zrange language 0 -1 withscores
1) "python"
2) "50"
3) "java"
4) "100"
5) "ruby"
6) "150"
7) "c++"
8) "200"

        参数 NX 和 XX 的说明

nx:只添加新成员

127.0.0.1:6379> zadd language nx 200 java 130 php 180 c++
(integer) 1

127.0.0.1:6379> zrange language 0 -1 withscores
 1) "python"
 2) "50"
 3) "java"
 4) "100"
 5) "php"
 6) "130"
 7) "ruby"
 8) "150"
 9) "c++"
10) "200"

        可以看到 java 和 c++ 的分数都没有改变,php 加入了 zset。

xx:更新已经存在的成员

127.0.0.1:6379> zadd language xx 200 java 180 c++ 30 shell
(integer) 0
127.0.0.1:6379> zrange language 0 -1 withscores
 1) "python"
 2) "50"
 3) "php"
 4) "130"
 5) "ruby"
 6) "150"
 7) "c++"
 8) "180"
 9) "java"
10) "200"

        可以看到 java 和 c++ 的分数发生了改变,而 shell 并没有加入 zset 当中。

ch:返回值为发生变化的成员总数

        前面我们看到 zadd 的返回值是添加成员的个数,使用 ch 参数后,zadd 的返回值为发生变化的成员的个数

127.0.0.1:6379> zadd language ch 210 java
(integer) 1
127.0.0.1:6379> zadd language 220 java
(integer) 0

        对比上面两条命令的返回值,使用了 ch 参数后,返回值为 1,说明有一个成员发生了变化;没有使用 ch 参数,返回值为 0,表示添加了 0 个成员。

incr:zadd 指令不再是设置,而是增加

        前面 python 的值为 50,我们使用 incr 参数对 python 的分数进行增加,命令如下:

127.0.0.1:6379> zadd language incr 50 python
"100"
127.0.0.1:6379> zrange language 0 -1 withscores
 1) "python"
 2) "100"
 3) "php"
 4) "130"
 5) "ruby"
 6) "150"
 7) "c++"
 8) "180"
 9) "java"
10) "220"

        可以看到,python 的分数为 100,不增加 incr 参数的情况:

127.0.0.1:6379> zadd language 50 python
(integer) 0
127.0.0.1:6379> zrange language 0 -1 withscores
 1) "python"
 2) "50"
 3) "php"
 4) "130"
 5) "ruby"
 6) "150"
 7) "c++"
 8) "180"
 9) "java"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农UP2U

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值