Можем ли мы добавить значение в список Redis со сроком действия C#? - PullRequest
3 голосов
/ 17 июня 2020

Я использую очередь Redis и добавляю данные с помощью ListLeftPu sh и читаю данные с помощью ListRightPop . Он работает нормально, я могу получить данные. Но что, если данные не выскочили? Можем ли мы удалить старые данные? или можем ли мы добавить значение в список Redis со сроком действия ? Как добавить ограничение по времени для каждого значения при использовании команды ListLeftPu sh в C#?

Ответы [ 2 ]

3 голосов
/ 17 июня 2020

Невозможно добавить время истечения срока действия для отдельного значения, чтобы redis оставался простым и быстрым.

вы можете добавить время истечения срока действия только для отдельных ключей, т.е. в случае ur это для всего списка.

2 голосов
/ 17 июня 2020

Нет, Redis не поддерживает это. Срок действия доступен только для ключей верхнего уровня . Тип данных / решение closes для вашего случая будет sorted sets.

  • Вы указываете срок действия (временная метка) как score при добавлении к отсортированному набору (ZADD)
  • Вместо LPOP вы используете ZPOPMAX, чтобы получить " должно быть последним истекшим"элемент.
  • Периодически вы можете использовать ZREMRANGEBYSCORE для удаления просроченных элементов.

Для демонстрации я использовал меньшие числа в качестве даты истечения срока .

127.0.0.1:6379> ZADD myset 15 "a"
(integer) 0
127.0.0.1:6379> ZADD myset 25 "b"
(integer) 0
127.0.0.1:6379> ZADD myset 35 "c" 45 "d" 55 "e"
(integer) 0
127.0.0.1:6379> ZRANGE myset 0 -1 WITHSCORES
 1) "a"
 2) "15"
 3) "b"
 4) "25"
 5) "c"
 6) "35"
 7) "d"
 8) "45"
 9) "e"
10) "55"
127.0.0.1:6379> ZPOPMAX myset
1) "e"
2) "55"
127.0.0.1:6379> ZREMRANGEBYSCORE myset -1 15
(integer) 1
127.0.0.1:6379> ZRANGE myset 0 -1
1) "b"
2) "c"
3) "d"
127.0.0.1:6379>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...