2015-09-23 3 views
1

Я использую отсортированный набор данных в Redis. Я добавляю данные с командой zadd. Добавление данных - формат JSON.Как изменить данные в отсортированном наборе?

Как я могу изменить значение в этом отсортированном наборе по количеству баллов? Мне нужно получить значение JSON и изменить одно поле и после обновления этого отсортированного набора.

Я пытался добавить againg данные с тем же счетом, но я получаю дубликатов

+0

Понятно, что если значение отличается от другого, Redis добавляет новый элемент в sorte set с тем же 'score' (: – Muhad

+0

Конечно. Как redis может знать, что вы имеете в виду существующего участника, если вы отправили другой? проверьте опцию XX на [ZADD] (http://redis.io/commands/zadd) – thepirat000

+0

Затем, как изменить данные? Я добавляю такие данные, как: 'zadd (key, score, data)'. После получения данных 'score' и попробуйте обновить' data' – Muhad

ответ

3

Все просто!

ZREM key data; 
ZADD key score newdata; 

Вы просто не можете ОБНОВИТЬ элемент в структуре SET. Это невозможно по определению! Как я не могу Ешь чашку с водой, я могу только Пить ее^_^

Ответ, если у вас есть дополнительные проблемы.

Кстати, я не знаю вашего приложения, но у меня есть сильное чувство, что SORTED SET непригоден для вашего приложения senario.

2

Один не обновляется (упорядоченные или нет) их участников множества. Вам придется удалить старый элемент и добавить новый (обновленный JSON) на своем месте с соответствующим счетом. Вы можете обернуть это в Lua или блок WATCH/MULTI/EXEC для атомарности.

Смежные вопросы