Kar*_*h A 3 django django-cache redis
我已使用 python 脚本将值设置为外部 Redis 服务器。
r = redis.StrictRedis(host='localhost', port=6379, db=1)
r.set('foo', 'bar')
Run Code Online (Sandbox Code Playgroud)
并尝试使用views.py中的django缓存从Web请求中获取值。
from django.core.cache import cache
val = cache.get("foo")
Run Code Online (Sandbox Code Playgroud)
它返回 None。但当我试图让它成形时
from django_redis import get_redis_connection
con = get_redis_connection("default")
val = con.get("foo")
Run Code Online (Sandbox Code Playgroud)
它返回正确的值“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
Run Code Online (Sandbox Code Playgroud)
所以最后,它返回到你使用的库,去阅读它的代码,看看它到底是如何保存密钥的。redis-cli可以成为您宝贵的朋友。基本上使用 设置一个键cache.set('foo', 'bar'),然后进入并使用 'keys *' 命令检查以查看为fooredis-cli设置的键。
| 归档时间: |
|
| 查看次数: |
3417 次 |
| 最近记录: |