一、Zset的常用命令
(一)ZADD:添加或更新元素
要是你想往Zset里加东西,或者更新一下已有的元素,那就用ZADD命令吧。分数必须是双精度浮点数,正无穷大(+inf)和负无穷大(-inf)也是可以的。
语法是这样的:
ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member ...]
• XX
:只更新已经存在的元素,不会添加新的。
• NX
:只添加新的元素,不会更新已有的。
• CH
:默认情况下,ZADD返回的是添加的元素个数,但加上这个选项后,还会包含更新的元素个数。
• INCR
:这时候命令就和ZINCRBY差不多了,会给元素的分数加上指定的分数,不过只能指定一个元素和分数。
时间复杂度是O(log(N)),返回值是添加成功的元素个数。
举个例子:
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 1 "uno"
(integer) 1
redis> ZADD myzset 2 "two" 3 "three"
(integer) 2
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
3) "uno"
4) "1"
5) "two"
6) "2"
7) "three"
8) "3"
(二)ZCARD:数数Zset里有多少元素
想知道Zset里有多少个元素?用ZCARD命令就行啦。它的时间复杂度是O(1),返回值就是Zset里的元素个数。
比如:
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZCARD myzset
(integer) 2
(三)ZCOUNT:数数分数范围内的元素
ZCOUNT命令可以帮你数一数分数在某个范围内的元素有多少个。默认情况下,范围的上下限都是包含在内的,但你可以用(
来排除某个边界。
语法是:
ZCOUNT key min max
时间复杂度是O(log(N)),返回值是满足条件的元素个数。
例如:
redis> ZADD myzset 1 "one"
(integer) 1
redis> ZADD myzset 2 "two"
(integer) 1
redis> ZADD myzset 3 "three"
(integer) 1
redis> ZCOUNT myzset -inf +inf
(integer) 3
redis> ZCOUNT myzset (1 3
(integer) 2
(四)ZRANGE:按分数升序获取元素
如果你想按照分数从小到大的顺序获取Zset里的元素,那就用ZRANGE命令吧。还能带上WITHSCORES
选项,把分数也一起返回。
语法:
ZRANGE key start stop [WITHSCORES]
时间复杂度是O(log(N)+M),返回值是区间内的元素列表。
例如:
redis> ZADD myzset 1 "one" 2 "two" 3 "three"
(integer) 3
redis> ZRANGE myzset 0 -1
1) "one"
2) "two"
3) "three"
redis> ZRANGE myzset 2 3
1) "three"
redis> ZRANGE myzset -2 -1
1) "two"
2) "three"