【发布时间】:2020-07-12 17:44:18
【问题描述】:
我是 AWS Redis 的新手。我用expire设置过期时间为48h。
from datetime import timedelta
r = redis.Redis(host=some aws entrypoint, charset="utf-8", decode_response
s=True)
r.hset("key", "field", "value")
result = r.expire("key", timedelta(minutes=(60 * 48)))
print("expire: " + str(self._r.ttl("key")), file=sys.stderr)
结果将返回 True。它会按预期打印出“172800”。
但是,大约 2 小时后,如果我在此期间没有访问相同的密钥,则 ttl 将返回 -2。如果我经常获得相同的密钥,则 ttl 将按预期工作(例如“168849”)。如果有人可以为我解释原因,那将非常有帮助。我需要密钥仅在 48 小时后过期。谢谢!
【问题讨论】:
-
你能分享更多细节吗?您是否仅使用此值测试空的 redis 缓存?您是否使用基于 LRU 的策略?更多信息:redis.io/topics/lru-cache
-
感谢您的回复。这是一个新的 Redis 节点。未达到最大内存。我猜不应该触发 LRU 策略。