Как заставить клиента redis генерировать исключение, когда истек срок действия структуры данных потока? - PullRequest
0 голосов
/ 25 мая 2020

Это значение, выраженное в командах 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). Однако, поскольку это метод «выстрелил и забыл», доставка уведомления не гарантируется. Поэтому я не могу использовать уведомление о пространстве ключей в качестве решения.

...