2016-09-22 1 views
0

Легко сделать список в redis с фиксированным размером, выполнив ltrim требуемого размера. Тем не менее, как можно сохранить список, который содержит данные, которые ограничены по времени, а не запрещены по размеру.Список с временными ограничениями в redis

E.g. как бы я сохранил список всех user_ids, которые вошли в мой сайт за последние 10 минут? Просьба привести иллюстративный пример наиболее эффективного способа достижения этого. Может быть, я подхожу к этому с неправильным типом данных?

ответ

2

Просто используйте отсортированный набор вместо списка. Используйте временные метки unix как количество элементов.

Чтобы добавить элемент в Zset: ZADD myzet <current timestamp> item

Чтобы получить пункты за последние десять минут, отсортированные по времени введения, старше первых: ZRANGEBYSCORE myzset (<current timestamp - 600 seconds> (+inf

Чтобы получить первый новейший заменить ZREVRANGEBYSCORE с ZRANGEBYSCORE.

Чтобы удалить просроченный товар:

ZREMRANGEBYSCORE -inf (<current timestamp - 600 seconds>

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