Django Redis 缓存值

标签 django redis django-cache

我已经使用 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")

它返回 None。但是当我试图从

中获取它时
from django_redis import get_redis_connection
con = get_redis_connection("default")
val = con.get("foo")

它返回正确的值“bar”。缓存和直接连接如何工作?

最佳答案

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

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

例如,当您执行 r.set('foo', 'bar') 时,它会将键设置为“:1:foo”。由于您不知道您的 key 前面的前缀,您无法使用普通获取获取 key ,您必须使用它自己的 API 来获取。

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

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

所以最后,它返回到你使用的库,去阅读它的代码,看看它是如何保存 key 的。 redis-cli 可以成为您宝贵的 friend 。基本上使用 cache.set('foo', 'bar') 设置一个键,然后进入 redis-cli 并使用 'keys *' 命令查看是什么键为 foo 设置。

关于Django Redis 缓存值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39524653/

相关文章:

python - Python 脚本运行方式的差异

c# - 设置一个 zip 文件到 redis 缓存

performance - Laravel 4.1 - 队列 :listen performance

python - django 查询集 + memcached : best practices

python - 如何访问模板缓存? - Django

python - 来自 django 模型的数据未传递到 highcharts 图表

python - 作为没有信用卡的学生设置 Heroku 插件

django - 如何在 Django 中制作可重用的模板?

c++ - 使用带有条件变量的 cpp_redis pub/sub 问题

python - Django 删除具有特定 key_prefix 的缓存