这是用redis命令表示的senario:
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在密钥过期时抛出异常?
我已经阅读了keyspace通知的文档(https://redis.io/topics/notifications). 然而,由于这是“一发不可收拾”,通知的送达不能得到保证。因此,我不能使用键空间通知作为解决方案。
暂无答案!
目前还没有任何答案,快来回答吧!