Задать вопрос
@Dinxor

Как в Redis сделать очередь с возможностью изменения элементов?

Подскажите, как в Redis сделать очередь с возможностью изменения элементов? Элементы типа ключ: значение, вместо добавления элемента с таким же ключом нужно обновлять значение в уже существующем - старое уже не нужно. Простая очередь из lput и rget так не умеет, если перед добавлением проверять наличие ключа в списке - логика получается слишком громоздкой и ненадёжной.
  • Вопрос задан
  • 41 просмотр
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
Наверное, стоит в списке хранить только ключи, а значения хранить в парах ключ-значение. Чуть прибавится операций:
  • при вставке смотреть, есть ли уже такой ключ, если есть только обновить значение. Если нет – то ещё и вставить в список.
  • при обработке / извлечении из списка – брать значение и удалять ключ-значение.


Вставка значения: SET key value GET – вернёт предыдущее значение, если было, или NULL. Если NULL, то надо ещё LPUSH queueName key

Извлечение значения:
RPOP queueName – вытащили ключ из очереди.
GETDEL key – получили значение + удалили ключ-значение.

Разумеется, надо позаботиться, чтобы ключи не конфликтовали с другими данным в редиске, в т.ч. с самой очередью. Может, всем ключам дописывать некий префикс.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы