我使用Django的内置模块和Redis作为缓存服务器。我的问题是关于以下代码中的超时设置:
cache.set(key,value,timeout)
假设我将超时设置为30秒。这是否意味着30秒后缓存中的键值对将被删除,我将不得不将(更新的)值重新提供给缓存?像这样:
if cache.get('key') is None:
cache.set('key','value',30)
else:
return cache.get('key')
或者30秒后缓存值仍然存在?
感谢您的帮助!
答案 0 :(得分:1)
此答案是基于您使用django-redis
包并使用默认设置的假设而给出的。
假设我将超时设置为30秒。这是否意味着30秒后缓存中的键值对将被删除,我将不得不将(更新的)值重新提供给缓存?
是。在指定为超时的30秒后,密钥值对将从redis中删除。然后,您需要再次使用给定的键值对重新填充缓存。
在设置和获取缓存键的问题中给出的上述代码是有效的。当密钥在redis缓存中不存在时,cache.get('key')
返回的默认值为None
。
使用带有超时参数的cache.set()
方法,调用redis命令SETEX
...
http://redis.io/commands/setex