LINUX.ORG.RU

redis version:3.2.12 и 5.0.4. Не работает команда ZADD с опцией NX

 


0

1
127.0.0.1:6379> ZADD testkey1 1555251311246 test_message
(integer) 1
127.0.0.1:6379> ZADD testkey1 1555251311247 test_message
(integer) 0
127.0.0.1:6379> ZADD testkey1 1555251311247 test_message1
(integer) 1
127.0.0.1:6379> ZADD testkey1 NX 1555251311247 test_message
(integer) 0
127.0.0.1:6379> ZADD testkey1 NX 1555251311248 test_message
(integer) 0
127.0.0.1:6379> ZADD testkey1 NX 1555251311248 test_message1
(integer) 0
127.0.0.1:6379> ZADD testkey1 NX 1555251311248 test_message2

в описании https://redis.io/commands/ZADD пишут

ZADD options (Redis 3.0.2 or greater)

ZADD supports a list of options, specified after the name of the key and before the first score argument. Options are:

    XX: Only update elements that already exist. Never add elements.
    NX: Don't update already existing elements. Always add new elements.
...

Мне нужно именно добавить элемент у которого score будет отличаться 100%, но вполне возможно в поле member будет уже присутствующая в БД строка с другим score
По score я планирую упорядочивать и извлекать с удалением c использованием ZPOPMAX key [count] https://redis.io/commands/zpopmax

Что не так делаю?

PS

В рассылку redis написал, но мою проблему почему то не опубликовали

★★★

Ответ на: комментарий от cdshines

теперь все так
я прочитал доку, member должен быть уникален
до прочтения доки думал что записей будет несколько с ключом NX для одних и тех же значений member, НО для разных score

Vlad-76 ★★★ ()