扎德
ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member ...]
- 从以下位置开始可用:
- 1.2.0
- 时间复杂度:
- O(log(N)) 表示,其中 N 是排序集中的元素数。
- ACL 类别:
-
@write
,@sortedset
,@fast
,
将具有指定分数的所有指定成员添加到排序集
存储于key
.
可以指定多个分数/成员对。
如果指定成员已经是排序集的成员,则 score 为
updated 并将元素重新插入到正确的位置,以确保正确的
订购。
如果key
不存在,则以指定成员为 sole 的新排序集
members 的创建,就像 sorted set 为空一样。如果键存在但不包含排序集,则返回错误。
分数值应该是双精度浮点数的字符串表示形式。+inf
和-inf
值也是有效值。
ZADD 选项
ZADD 支持选项列表,在键名称之后和之前指定 第一个 score 参数。选项包括:
- XX:仅更新已存在的元素。不要添加新元素。
- NX:仅添加新元素。不要更新已存在的元素。
- LT:仅当新分数小于当前分数时,才更新现有元素。此标志不会阻止添加新元素。
- GT:仅当新分数大于当前分数时,才更新现有元素。此标志不会阻止添加新元素。
- CH:将返回值从添加的新元素数修改为已更改元素的总数(CH 是 changed 的缩写)。更改的元素是添加的新元素和已更新的分数的现有元素。因此,在命令行中指定的元素与过去具有相同的分数不会被计算在内。注意:通常
ZADD
仅计算添加的新元素的数量。 - INCR:指定此选项时
ZADD
作用类似于ZINCRBY
.在此模式下,只能指定一个 score-element 对。
注: GT、LT 和 NX 选项是互斥的。
可以精确表示的整数分数范围
Redis 排序集使用双 64 位浮点数来表示分数。在我们支持的所有架构中,这都表示为 IEEE 754 浮点数,它能够精确地表示-(2^53)
和+(2^53)
包括。更实际地说,-9007199254740992 和 9007199254740992 之间的所有整数都是完全可表示的。较大的整数或分数在内部以指数形式表示,因此您可能只得到十进制数的近似值,或者您设置为 score 的非常大的整数的近似值。
排序集 101
排序的集合按其分数升序排序。
同一个元素只存在一次,没有重复的元素
允许。分数可以通过以下方式修改ZADD
这将更新
element 分数,作为副作用,它在有序集合中的位置,以及
由ZINCRBY
,可用于更新相对于其
previous 值。
元素的当前分数可以使用ZSCORE
命令
这也可以用来验证元素是否已经存在。
有关排序集的介绍,请参阅 sorted 上的数据类型页面 集。
具有相同分数的元素
虽然同一个元素不能在有序集中重复,因为每个元素 是唯一的,则可以添加具有相同分数的多个不同元素。当多个元素具有相同的分数时,它们将按字典顺序排序(它们仍按 score 作为第一个键排序,但是,在本地,具有相同分数的所有元素都按字典顺序相对排序)。
使用的字典顺序是二进制的,它将字符串作为字节数组进行比较。
如果用户以相同的分数(例如 0)插入排序集中的所有元素,则排序集的所有元素都按字典顺序排序,并且可以使用命令ZRANGEBYLEX
(注意:也可以使用ZRANGEBYSCORE
).
例子
Give these commands a try in the interactive console:
RESP2 Reply
Any of the following:
- Nil reply: if the operation was aborted because of a conflict with one of the XX/NX/LT/GT options.
- Integer reply: the number of new members when the CH option is not used.
- Integer reply: the number of new or updated members when the CH option is used.
- Bulk string reply: the updated score of the member when the INCR option is used.
RESP3 Reply
Any of the following:
- Null reply: if the operation was aborted because of a conflict with one of the XX/NX/LT/GT options.
- Integer reply: the number of new members when the CH option is not used.
- Integer reply: the number of new or updated members when the CH option is used.
- Double reply: the updated score of the member when the INCR option is used.
History
- Starting with Redis version 2.4.0: Accepts multiple elements.
- Starting with Redis version 3.0.2: Added the
XX
, NX
, CH
and INCR
options.
- Starting with Redis version 6.2.0: Added the
GT
and LT
options.