Нет, 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>