Это значение, выраженное в командах redis:
127.0.0.1:6381> xadd test 1 field1 data1
"1-0"
127.0.0.1:6381> xrange test - +
1) 1) "1-0"
2) 1) "field1"
2) "data1"
127.0.0.1:6381> expire test 10
(integer) 1
127.0.0.1:6381> xrange test - +
1) 1) "1-0"
2) 1) "field1"
2) "data1"
127.0.0.1:6381> xrange test - +
(empty list or set)
В этой последовательности для структуры данных потока установлено время истечения через 10 секунд. Через 10 секунд команда xrange
вернет (empty list or set)
. Я могу подтвердить с помощью команды keys
, что ключ test
больше не существует.
Если я переведу приведенную выше последовательность в салат, я обнаружу, что последняя команда xrange
просто вернет пустой список . Он вообще не генерирует никаких исключений, даже если ключ больше не существует.
key = 'test'
slot = SlotHash.getSlot(key);
var nodeId = cluster.getPartitions().getPartitionBySlot(slot).getNodeId();
shard = cluster.getConnection(nodeId);
shard.sync().xrange(key, Range.from(Boundary.unbounded(), Boundary.unbounded()), 100)
Можно ли сделать так, чтобы xrange генерировала исключение, когда срок действия ключа истек?
Я прочитал документация уведомления о пространстве ключей (https://redis.io/topics/notifications). Однако, поскольку это метод «выстрелил и забыл», доставка уведомления не гарантируется. Поэтому я не могу использовать уведомление о пространстве ключей в качестве решения.