在AWS Redis中设置没有到期时间的检查键

问题描述 投票:0回答:1

我们可以使用TTL命令获得Redis(aws弹性缓存服务)中单个键的到期时间。同样,也有任何方法可以找到在特定时间范围内设置的所有没有到期的密钥(例如:自12月起)。

Redis引擎版本:2.8.21

redis in-memory-database amazon-elasticache
1个回答
0
投票

Redis不存储密钥的创建时间。如果需要,可以维护一个单独的数据结构以存储此信息。

例如,您可以使用将每个键映射到其创建(或最后更新)时间的哈希值。它对于存储非常有效,但是如果您要搜索最近创建的2000个密钥,那么这可能不是最佳解决方案。但是有解决方案!

您可以根据需要使用Redis的排序集。对于您创建的每个键,还应使用当前时间戳记作为得分,将该键添加到已排序的集合中:

ZADD <set_name> <timestamp> <key>

稍后,如果要查找最新的2000个密钥,可以使用]查询排序后的集合。

ZRANGE <set_name> -2000 -1 WITHSCORES

这将为您提供您想要达到的目标(如果我理解正确的话),但是要付出代价。每个插入排序集的时间复杂度为O(log(N))。另外,您可能要考虑使这两个操作(添加键值+将键添加到集合)是原子的,这涉及编写简短的Lua脚本并将其用于设置值,但是我认为这超出了范围这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.