ZDD key [NX|XX] [CH] [INCR] score member [score member ...]
自1.2.0版本后可用 时间复杂度:每添加一次item的时间复杂度O(log(N)), N是sorted set元素的数量
将具有指定分数的指定成员添加到键为key的有序集合中(sorted set),可以指定多个score/member 的键值对。如果指定的成员是有序集合中的成员,会更新该成员的分数并更新到正确的位置上。
如果key不存在,将会创建一个新的有序集合(sorted set)并将分数/成员(score/member)对添加到有序集体,就像原来存在一个空的有序集合一样。如果key存在,但是类型不是有序集合,将会返回一个错误
分数的值应该是一个代表双精度浮点数的字符串。+inf 和 -inf也是有效值
ZADD选项(Redis 3.0.2或更新的版本)
ZADD 支持一系列的选项,在key的名字后在第一个分数参数之前指定。选项是:
- XX 仅更新已经存在的元素,从不添加不存在的元素
- NX 不更新已经存在的元素,只添加新元素
- CH
可以表示分数的范围
具有相同分数的元素
因为每个元素都是唯一的,所以相同的元素不可能重复出现在sorted set中。可以添加多个具有相同分数的不同的元素。当多个元素具有相同的分数,他们以lexicographically排序(他们始终以分数作为第一个key排序, 然而,多个具有相同分数的元素会相对以lexicographically排序)
字典顺序排序用的是二进制,它比较的是字符串的字节数组。
如果用户将所有元素设置相同分数(例如0),有序集合里面的所有元素将按照字典顺序进行排序。元素的范围查询也是可以使用ZRANGEBYLEX
返回值
返回整数, 形式如下:
- 添加进sorted set的元素的数量, 不包括已经存在但更新了分数的元素 如果INCR选项指定了,返回的值将会是字符串
- 成员新的分数
历史
- >= 2.4 接收多个元素。在Redis2.4之前的版本一次调用仅能添加或更新一个成员
示例
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 WITCHSCORES