我的问题是:我有一组值,每个值都必须有过期值。 代码:
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/