我在 Django 中设置了一个缓存,如下所示:
from django.core.cache import cache
...
cache.set("cae9ad31b9206a1b5594813b509e1003", "test", timeout=10)
Run Code Online (Sandbox Code Playgroud)
它生成一个这样的密钥:
:1:cae9ad31b9206a1b5594813b509e1003
Run Code Online (Sandbox Code Playgroud)
如何:1:从密钥中删除前缀?
你不必担心它,真的,因为这不会影响你如何get获得一个键的值。
cache.get("cae9ad31b9206a1b5594813b509e1003")
# outputs
"test"
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
Django 通过将key您提供的 与缓存的 组合来生成缓存键version。
例子:
cache.set("my_key", "value", version=2)
# becomes
":2:my-key"
Run Code Online (Sandbox Code Playgroud)
因为,默认情况下version=1,这就是为什么在您的情况下它变为:1:cae9a....
这称为缓存版本控制。它很有用,因为这样您可以拥有特定对象的多个缓存版本。
如何覆盖这个?
如果您出于任何原因仍想覆盖此行为,您可以按照文档建议进行操作。
首先在这样的地方创建一个函数:
def my_key_maker(key, key_prefix, version):
return key # just return the key without doing anything
Run Code Online (Sandbox Code Playgroud)
然后,在您的CACHES设置中执行以下操作:
CACHES = {
"default": {
"BACKEND": ...,
# other settings ...
"KEY_FUNCTION": "path.to.my_key_maker"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2632 次 |
| 最近记录: |