Redis: очистить членов ZSET - PullRequest
       3

Redis: очистить членов ZSET

0 голосов
/ 14 ноября 2018

Я сейчас изучаю Redis, и у меня есть следующий случай:

enter image description here

Итак, у меня есть отсортированный набор по идентификатору места Google, для которого все сообщения сортируются от недавних к старым. Первая запрашиваемая страница извлекает сообщения <текущее время. Когда курсор отправляется на сервер, этот курсор представляет собой простую временную метку, которая указывает, откуда следует извлечь следующие сообщения из ZSET. <br> Запрос для получения сообщений по идентификатору места будет:

ZREVRANGEBYSCORE <gplaceId> <cur_timestamp> -INF WITHSCORES LIMIT <offset:timestamp as from where to fetch> <count:number of posts>

Мой вопрос - каков рекомендуемый способ очистки членов ZSET.
Поскольку я хочу использовать Redis в качестве кэша, я бы предпочел ограничить количество сообщений на место, например, до 50. Когда места получают новые сообщения, когда в набор уже добавлено 50 сообщений, я хочу удалить последнее сообщение из набора.

Конечно, я понимаю, что могу выполнить ручную проверку каждой вставки и выполнить операции как таковые, но мне интересно, есть ли в Redis рекомендуемый способ выполнения этой очистки. В качестве альтернативы я мог бы создать планировщик для этого, но я бы предпочел не делать этого.

1 Ответ

0 голосов
/ 15 ноября 2018

К сожалению, в отсортированном наборе Redis нет встроенной функции для этого.Если бы отсортированные наборы допускали атрибут максимального размера с настраиваемой стратегией выселения - вы могли бы избежать дополнительной работы.

См. Этот связанный вопрос: Как задать сортировку по Redis Установить фиксированный размер?

В отсутствие такой функции оба упомянутых вами подхода верны.

  1. Вы можете заменить вставки транзакцией: вставка, проверка размера, удаление, если> 50

  2. Поток, который проверяет размер набора ипериодически обрезает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...