首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django Redis缓存值

Django Redis缓存值
EN

Stack Overflow用户
提问于 2016-09-16 06:01:00
回答 1查看 2.7K关注 0票数 3

我在外部使用python脚本将值设置为Redis服务器。

代码语言:javascript
复制
r = redis.StrictRedis(host='localhost', port=6379, db=1)
r.set('foo', 'bar')

并试图使用views.py中的django缓存从web请求中获取值。

代码语言:javascript
复制
from django.core.cache import cache
val = cache.get("foo")

它什么也不回。但当我试图得到它的形式

代码语言:javascript
复制
from django_redis import get_redis_connection
con = get_redis_connection("default")
val = con.get("foo")

它正在返回正确的值'bar‘。高速缓存和直接连接是如何工作的?

EN

回答 1

Stack Overflow用户

发布于 2016-09-16 06:16:06

库通常使用几个内部前缀来将键存储在redis中,以避免与用户定义的键混淆。

例如,django-redis-缓存为您保存到其中的每个键都加上了":1:“。

例如,当您执行r.set('foo', 'bar')时,它设置为":1:foo“的键。由于您不知道键前面的前缀,所以不能使用普通的get获取密钥,所以必须使用它自己的API来获取。

代码语言:javascript
复制
r.set('foo', 'bar')

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

因此,最后,它返回到您使用的库,阅读它的代码,看看它是如何准确地保存键的。redis-cli可以成为你在这里的宝贵朋友。基本上,用cache.set('foo', 'bar')设置一个键,然后进入redis-cli并使用‘key *’命令检查为foo设置了什么键。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39524653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档