使用django自帶的模組處理redis快取時,設定好的key比如說時“banners”, 到了在redis的cli下看到name就變成了“:1:banners”,這是django的機制,還是redis的呢
from django.core.cache import cache
def get_queryset(self):
key = "banners"
queryset = cache.get(key)
if not queryset:
queryset = Banner.objects.filter(valid=True)
cache.set(key, queryset, 3600)
return queryset
你自己在設定redis會選擇redis的函式庫,redis本身就分成幾個函式庫,看你設定是哪一個
這個是django cache的機制, key由前綴,版本號,真正的key組成。 django在升級或程式碼重構的時候有用,可以判斷key是那個版本號,從而進行相容(其它歡迎補充)
1.首先看django redis client api的實作:
它使用了make_key這個函數製作新的key,至於真正的key是從_backend.key_func來的。
2.其次查看django cache backend實作
由此可見,django redis cache的key是有前綴,版本號,真正的key組成。