Redis有序集合(sorted set)
(1)说明:
A、Redis有序集合和集合一样也是string类型元素的集合,且不允许重复的成员;不同的是每个元素都会关联一个double类型的分数;redis正式通过分数来为集合中的成员进行从小到大的排序;有序集合的成员是唯一的,但分数(score)却可以重复;
B、集合是通过哈希表实现的,所以添加、删除、查找的复杂度都是O(1);集合中最大的成员数是2^(32-1)((4294967295, 每个集合可存储40多亿个成员)
(2)实例:
Redis有序集合命令:
1、Redis Zadd命令
(1)说明:Redis Zadd命令用于将一个或多个成员元素及其分数值加入到有序集当中;如果某个成员已经是有序集的成员,那么更新这个成员的分数值,并通过重新插入这个成员元素,来保证成员在正确的位置上;分数值可以是整数值或双精度浮点数;如果有序集合key不存在,则创建一个空的有序集并执行ZADD操作;当key存在但不是有序集类型时,返回一个错误
(2)语法:redis 127.0.0.1:6379> ZADD KEY_NAME SCORE1 VALUE1.. SCOREN VALUEN;返回被成功添加的新成员的数量,不包括那些被更新的、已经存在的成员
(3)实例:
2、Redis Zcard命令
(1)说明:Redis Zcard命令用于计算机集合中元素的数量
(2)语法:redis 127.0.0.1:6379> ZCARD KEY_NAME;当key存在且是有序集类型时,返回有序集的基数;当key不存在时,返回0
(3)实例:
3、Redis Zcount命令
(1)说明:Redis Zcount命令用于计算有序集合中指定分数区间的成员数量
(2)语法:redis 127.0.0.1:6379> ZCOUNT key min max;返回分数值在min和max之间的成员的数量
(3)实例:
4、Redis Zincrby命令
(1)说明:Redis Zincrby命令对有序集合中指定成员的分数加上增量increment;可以通过传递一个负数值increment,让分数减去相应的值,比如ZINCRBY key-5 member,就是让member的score值减去5
当key不存在,或分数不是key的成员时,ZINCRBY key increment member等同于ZADD key increment menber;当key不是有序集类型时,返回一个错误;分数值可以是整数值或双精度浮点数
(2)语法:redis 127.0.0.1:6379> ZINCRBY key increment member;返回member成员的新分数值,以字符串形式表示;
(3)实例:
5、Redis Zinterstore命令
(1)说明:Redis Zinterstore命令计算给定的一个或多个有序集的交集,其中给定key的数量必须以numkeys参数指定,并将该交集(结果集)储存到destination;
默认情况下,结果集中某个成员的分数值是所有给定集下该成员分数值之和
(2)语法:redis 127.0.0.1:6379> ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX];返回保存到目标结果集的成员数量
(3)实例:
6、Redis Zlexcount命令
(1)说明:Redis Zlexcount命令在计算有序集合中指定字典区间内成员数量
(2)语法:redis 127.0.0.1:6379> ZLEXCOUNT KEY MIN MAX;返回区间内的成员数量
(3)实例:
7、Redis Zrange命令
(1)说明:Redis Zrange命令返回有序集中,指定区间内的成员;其中成员的位置按分数值递增(从小到大)来排序;具有相同分数值的成员按字典序(lexicographical order)来排列;如果你需要成员按值递减(从大到小)来排列,请使用ZREVARANGE命令;下标参数start和stop都以0为底,也就是说,以0表示有序集第一个成员,以1表示有序集第二个成员,以此类推;你也可以使用负数下标,以-1表示最后一个成员,-2表示倒数第二个成员,以此类推。
(2)语法:redis 127.0.0.1:6379> ZRANGE key start stop [WITHSCORES];指定区间内,带有分数值(可选)的有序集成员的列表
(3)实例:
8、Redis Zrangebylex命令
(1)说明:Redis Zrangebylex通过字典区间返回有序集合的成员
(2)语法:redis 127.0.0.1:6379> ZRANGEBYLEX key min max [LIMIT offset count];返回指定区间内的元素列表
(3)实例:
9、Redis Zrangebyscore命令
(1)说明:Redis Zrangebyscore命令返回有序集合中指定分数区间的成员列表;有序集成员按分数值递增(从小到大)次序排列;具有相同分数值的成员按字典来排列(该属性是有序集提供的,不需要额外的计算);默认情况下,区间的取值使用闭区间(小于等于或大于等于), 你也可以通过给参数前增加(符号来使用可选的开区间(小于或大于));
(2)语法:redis 127.0.0.1:6379> ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count];返回指定区间内,带有分数值(可选)的有序成员的列表
(3)实例:
A、
B、
10、Redis Zrevrange命令
(1)说明:Redis Zrevrange命令返回有序集中,指定区间内的成员;其中成员的位置按分数值递减(从大到小)来排列;具有相同分数值的成员按字典序的逆序排列;除了成员按分数值递减的次序排列这一点外,ZREVRANGE命令的其他方面和ZRANGE命令一样
(2)语法:redis 127.0.0.1:6379> ZREVRANGE key start stop [WITHSCORES];返回指定区间内,带有分数值(可选)的有序集成员的列表
(3)实例:
11、Redis Zrevrangebyscore命令
(1)说明:Redis Zravangebyscore返回有序集中指定分数区间内的所有的成员;有序集成员按分数值递减(从大到小)的次序排列;具有相同分数值的成员按字典的逆序排列;除了成员按分数值递减的次序排列这一点外,ZREVRANGEBYSCORE 命令的其他方面和 ZRANGEBYSCORE 命令一样。
(2)语法:redis 127.0.0.1:6379> ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count];返回指定区间内,带有分数值(可选)的有序集成员的列表
(3)实例:
12、Redis Zrevrank命令
(1)说明:Redis Zrevrank命令返回有序集中成员的排名;其中有序集成员按分数值递减(从大到小)排序,排序以0为底,也就是说,分数值最大的成员排名为0;使用ZRANK命令可以获得成员按分数值递增排列的排名(从小到大)
(2)语法:redis 127.0.0.1:6379> ZREVRANK key member;如果成员是有序集key的成员,返回成员的排名;如果成员不是有序集key的成员,返回nil
(3)实例:
13、Redis Zscore命令
(1)说明:Redis Zscore命令返回有序集中,成员的分数值;如果成员元素不是有序集key的成员,或key不存在,返回nil
(2)语法:redis 127.0.0.1:6379> ZSCORE key member;返回成员的分数值,以字符串的形式表示
(3)实例:
14、Redis Zunionstore命令
(1)说明:Redis Zunionstore命令计算给定的一个或多个有序集的并集,其中给定key的数量必须以numkeys参数指定,并将该并集(结果集)储存到destination;默认情况下,结果几种某个成员的分数值是所有给定集下该成员分数值之和
(2)语法:redis 127.0.0.1:6379> ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX];返回保存到destination的结果集的成员数量
(3)实例:
15、Redis Zscan命令
(1)说明:Redis Zscan命令用于迭代有序集合中的元素(包含元素成员和元素分值)
(2)语法:redis 127.0.0.1:6379> ZSCAN key cursor [MATCH pattern] [COUNT count];返回的每个元素都是有序集合元素,一个有序集合元素由一个成员和一个分值组成
以上的内容来源于菜鸟教程,都是从里面总结并且通过自己亲自操作截图整理的,希望对你有帮助。