我在Django中设置了如下缓存:
from django.core.cache import cache
...
cache.set("cae9ad31b9206a1b5594813b509e1003", "test", timeout=10)它生成如下所示的密钥:
:1:cae9ad31b9206a1b5594813b509e1003如何从密钥中删除:1:前缀?
发布于 2017-12-08 12:28:36
您不需要担心它,真的,因为这并不影响您如何get一个键的值。
cache.get("cae9ad31b9206a1b5594813b509e1003")
# outputs
"test"为什么会发生这种事?
Django通过将提供给它的key与缓存的version组合起来生成缓存密钥。
示例:
cache.set("my_key", "value", version=2)
# becomes
":2:my-key"因为,在默认情况下,这就是为什么在您的情况下,它变成了version=1。
这叫做缓存版本控制。它很有用,因为这样您就可以拥有一个特定对象的多个缓存版本。
如何覆盖这个?
如果您仍然希望以任何理由重写此行为,则可以作为医生建议进行。
首先,在这样的地方创建一个函数:
def my_key_maker(key, key_prefix, version):
return key # just return the key without doing anything然后,在CACHES设置中执行以下操作:
CACHES = {
"default": {
"BACKEND": ...,
# other settings ...
"KEY_FUNCTION": "path.to.my_key_maker"
}
}https://stackoverflow.com/questions/47713718
复制相似问题