当特定键的 TTL 过期时,Redis 会发出任何类型的事件吗?
我希望在任何给定时间点为我的应用程序添加 Redis 中的键数。我在生成 key 时有一个递增计数器,同样我希望在 key 过期(TTL 过期)时有一个递减计数器。 我知道我可以通过执行“KEYS”来实现这一点,但我想知道 Redis 是否会生成某种事件,当 key 过期时我可以捕获这些事件。 我将使用 NodeJS 来捕获事件。
谢谢, 拉古。
最佳答案
不要在生产中使用 KEYS
- 它可能是一个长时间运行、消耗 RAM、拒绝服务的操作。
是的,从 v2.8.0 开始,Redis 确实有您要找的东西。阅读 Redis Keyspace Notifications页面,特别是关于设置 x
标志和订阅相关 channel 。
请注意,虽然这是使用 Redis 的好方法,但 PubSub 消息的传递是不能保证的,因此如果消息丢失,您的计数器可能会随着时间的推移而变化。在这种情况下,最好定期扫描您的数据库(使用 SCAN
命令,而不是 KEYS
)以刷新它们。
关于node.js - TTL 过期时的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29833948/