我在Django中设置了一个缓存,如下所示:
cordova-android@7.0.0
它生成一个这样的键:
from django.core.cache import cache
...
cache.set("cae9ad31b9206a1b5594813b509e1003", "test", timeout=10)
如何从密钥中删除:1:cae9ad31b9206a1b5594813b509e1003
前缀?
答案 0 :(得分:1)
您不必担心,因为这不会影响您get
密钥价值的方式。
cache.get("cae9ad31b9206a1b5594813b509e1003")
# outputs
"test"
为什么会发生这种情况?
Django通过将您提供的key
与缓存的version
相结合来生成缓存密钥。
示例:
cache.set("my_key", "value", version=2)
# becomes
":2:my-key"
因为默认情况下version=1
,这就是为什么在您的情况下它变为:1:cae9a...
。
这称为Cache Versioning。它很有用,因为这样您就可以拥有特定对象的多个缓存版本。
如何覆盖?
如果您仍想以任何理由覆盖此行为,则可以docs suggest执行此操作。
首先在这样的地方创建一个函数:
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"
}
}