作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在我的 django 项目中使用了 celery 和 redis。
# In tasks.py
@shared_task
def my_func():
r = redis.StrictRedis()
context = {
"my_var1" : afunction(6)
"my_var2" : afunction(10)
}
r.set('this_var', context)
# In views.py
def home(request):
r = redis.StrictRedis()
return render(request, "home.html", r.get('this_var'))
#In home.html
<h1>{{ my_var1 }}</h1>
<h1>{{ my_var2 }}</h1>
其中 afunction()
只是我创建的一个函数,它在将数字作为参数时执行某些操作。此外,我已经将 celery beat、celery 和 redis 设置得很好,因为我已经用其他示例对它们进行了测试,以确保它们可以正常工作。此外,我之前使用过 r.get
和 r.set
其他东西并且它们有效。但是,在 home.html 页面上,我没有看到 my_var1
或 my_var2
的内容,这表明 'this_var'
没有存储我的字典 context
。有人可以帮帮我吗?
此外,如果我只是将上下文放在 views.py 中的 home(request)
函数中,一切正常。
最佳答案
那是因为您使用字典调用 redis.set(),而 set 是为处理字符串而设计的。因此,添加到 Redis 的是字典的字符串表示形式。
您需要使用 hmset to 保存字典和 hgetall 检索它。例如:
r.hmset('this_var', context)
和
return render(request, "home.html", r.hgetall('this_var'))
关于python - 如何用django redis存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32261473/
我是一名优秀的程序员,十分优秀!