node.js - TTL 过期时的事件

标签 node.js redis

当特定键的 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/

相关文章:

c# - 将字典中的数据批量设置到 Redis

redis - WAIT命令能否在Redis中提供强一致性?

node.js - TypeScript 0.8.2 在内部模块中导入 Node.js 模块

javascript - 当您不知道数组有多大时,如何获取 JSON 数组中的最后一个索引?

node.js - 如何在离线时安装 npm 包?

node.js - Mongoose 按字段查找?

javascript - Mongoose 将请求对象传递给中间件

kotlin - Jedis内部向redis服务器发送QUIT请求

java - 如何使用 jedis for Java 连接到 Docker Redis 集群实例?

Redis 命令获取发布/订阅的所有可用 channel ?