簡體   English   中英

Django Redis 緩存值

[英]Django Redis cache values

我已經使用 python 腳本在外部將值設置為 Redis 服務器。

r = redis.StrictRedis(host='localhost', port=6379, db=1)
r.set('foo', 'bar')

並嘗試使用views.py 中的django 緩存從Web 請求中獲取值。

from django.core.cache import cache
val = cache.get("foo")

它返回無。 但是當我試圖讓它形成時

from django_redis import get_redis_connection
con = get_redis_connection("default")
val = con.get("foo")

它正在返回正確的值“bar”。 緩存和直接連接如何工作?

庫通常使用幾個內部前綴來存儲 redis 中的鍵,以免與用戶定義的鍵混淆。

例如, django-redis-cache ,在您保存到其中的每個鍵前附加一個“:1:”。

例如,當您執行r.set('foo', 'bar') ,它會將鍵設置為“:1:foo”。 由於您不知道密鑰前面的前綴,因此無法使用普通 get 獲取密鑰,您必須使用它自己的 API 來獲取。

r.set('foo', 'bar')

r.get('foo') # None
r.get(':1:foo') # bar

所以最后,它返回到你使用的庫,去閱讀它的代碼,看看它是如何准確地保存密鑰的。 redis-cli在這里可以成為您寶貴的朋友。 基本上使用cache.set('foo', 'bar')設置一個鍵,然后進入redis-cli並使用 'keys *' 命令檢查以查看為foo設置的鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM