Redis之Sorted Sets
1、ZADD
ZADD key score member [score member ...]
- 将所有指定成员添加到键为key有序集合(sorted set)里面。 添加时可以指定多个分数/成员(score/member)对。如果指定添加的成员已经是有序集合里面的成员,则会更新改成员的分数(scrore)并更新到正确的排序位置。
- 如果key不存在,将会创建一个新的有序集合(sorted set)并将分数/成员(score/member)对添加到有序集合,就像原来存在一个空的有序集合一样。如果key存在,但是类型不是有序集合,将会返回一个错误应答。
- 分数值是一个双精度的浮点型数字字符串。+inf和-inf都是有效值。
例子
127.0.0.1:6379> zadd key1 1 zhangsan
(integer) 1
127.0.0.1:6379> zadd key1 2 lisi
(integer) 1
127.0.0.1:6379> zadd key1 3 wangwu
(integer) 1
127.0.0.1:6379> zadd key1 4 zhouliu
(integer) 1
127.0.0.1:6379> zrange key1 0 -1
1) "zhangsan"
2) "lisi"
3) "wangwu"
4) "zhouliu"
127.0.0.1:6379>
2、ZCARD
ZCARD key
key存在的时候,返回有序集的元素个数,否则返回0
例子
127.0.0.1:6379> zadd key1 1 zhngsan
(integer) 1
127.0.0.1:6379> zadd key1 2 lisi
(integer) 1
127.0.0.1:6379> zadd key1 3 wangwu
(integer) 1
127.0.0.1:6379> zrange key1 0 -1
1) "zhngsan"
2) "lisi"
3) "wangwu"
127.0.0.1:6379> zcard key1
(integer) 3
127.0.0.1:6379> zcard key2
(integer) 0
127.0.0.1:6379>
3、ZRANGE
ZRANGE key start stop [WITHSCORES]
- 返回存储在有序集合key中的指定范围的元素。 返回的元素可以认为是按得分从最低到最高排列。 如果得分相同,将按字典排序。
- 参数start和stop都是基于零的索引,即0是第一个元素,1是第二个元素,以此类推。 它们也可以是负数,表示从有序集合的末尾的偏移量,其中-1是有序集合的最后一个元素,-2是倒数第二个元素。
- 超出范围的索引不会产生错误。 如果start参数的值大于有序集合中的最大索引,或者start > stop,将会返回一个空列表。 如果stop的值大于有序集合的末尾,Redis会将其视为有序集合的最后一个元素。
返回值
给定范围内的元素列表
例子
127.0.0.1:6379> zadd key1 1 one
(integer) 1
127.0.0.1:6379> zadd key1 2 two
(integer) 1
127.0.0.1:6379> zadd key1 3 three
(integer) 1
127.0.0.1:6379> zrange key1 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> zrange key1 1 2
1) "two"
2) "three"
127.0.0.1:6379>
4、ZREM
ZREM key member [member ...]
当key存在,但是其不是有序集合类型,就返回一个错误。
返回值
返回的是从有序集合中删除的成员个数,不包括不存在的成员
例子
127.0.0.1:6379> zrange key1 0 -1
1) "one"
2) "two"
3) "three"
127.0.0.1:6379> zrem key1 one two
(integer) 2
127.0.0.1:6379> zrange key1 0 -1
1) "three"
127.0.0.1:6379>