Redis 在大量键上过期

标签 redis

我的问题是:我有一组值,每个值都必须有过期值。 代码:

set a:11111:22222 someValue
expire a:11111:22222 604800 \\usually equal a week

在一个完美的世界里,我会把所有这些值放在一个散列中,并给每个值适当的过期值,但 Redis 不允许在散列字段上过期。

问题是我还有一个过程需要大约每小时获取一次所有这些 key

keys a:*

此命令非常昂贵,根据 redis 文档,可能会导致性能问题。我在每个给定时刻大约有 25000-30000 个 key 。

有人知道我该如何解决这样的问题吗? 竖起大拇指保证(-;
罗伊

最佳答案

让我提出一个替代解决方案。

与其要求 Redis 扫描所有键,为什么不执行后台转储,然后解析转储以提取键?这样,对 Redis 实例本身的影响为零。

解析转储文件并不像听起来那么可怕,因为您可以使用优秀的 redis-rdb-tools 包:

https://github.com/sripathikrishnan/redis-rdb-tools

您可以将转储文件转换为json文件,然后解析json文件,也可以使用Python API自行提取 key 。

关于Redis 在大量键上过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19978033/

相关文章:

redis - 我可以使用 twemproxy 通过 redis 队列大小进行负载平衡吗?

node.js - 使用 GCE redis 单击部署连接 node.js 到 Node 集群

windows - 安装时如何指定redis的配置文件?

redis - 如何使用 Redis 5.x 禁用持久性

spring - 如何使用 docker-compose.yml 在 Docker 上运行 Redis?

redis - 为什么我的 redis 命令键不会阻止我的其他操作

ruby-on-rails - 需要 redis 时,rails 控制台返回 false

python - WorkerLostError ('Worker exited prematurely: signal 15 (SIGTERM).' ,)

redis - Redis是否需要锁定?

redis - 如何在 ServiceStack Redis 客户端中清除所有 X 类型的实例