2024-09-18 03:05:08
导读:本篇文章首席CTO笔记来给大家介绍有关django怎么使用redis的相关内容,希望对大家有所帮助,一起来看看吧。
Django连接Redis集群问题排查思路和总结直接就一个连接失败
确认账号密码和端口没问题后,问题同事配置有没验证过,他说直接从网上cv的,完全没经过验证。坑啊!!!
把生产的配置和测试配置比较好,修改了几个地方
信心满满,重启启动djangoshell测试,结果还是连接不上!这时候心情开始有点糟糕~
冷静,djangoshell不行,那用pythonshell直连试试?
一点毛病都没有,直接连上了!
一脸懵逼,这到底是啥问题啊!
结果依然是连接不上。
不知不觉已经到了晚上九点,好累,不想卷了。下班回家吧
回家路上整个脑子都被这个问题困扰着。难道密码中含有@符号的redis集群,Django真的连接不上?反复的问自己。
问了其他同事,生产环境是否有其他的redis集群可以用来调试。很遗憾,并没有。
要不,我自己创建一个redis集群,把密码设置成含有@符号?
可是,自己本地创建redis集群好麻烦啊。要本地安装虚拟机,想到一堆配置就直接劝退。
洗完澡,和老婆聊了1h左右的视频。已经到11点多,准备睡觉?
那是不可能的,带着问题是很难入睡!哎,这个是老毛病了。
突然想到了一个点,最小试错原则。自己搭建本地集群很麻烦,公司又没有多余的集群。
那直接买一个云版的redis集群?说干就干,直接从床上起来,打开电脑。
这时问题又来了,阿里云还是腾讯云?
鉴于双11买了腾讯云2c4g8m的服务器,只要199就能3年。
再对比之前买阿里云那个1c2g1m服务器,3年也要100多。
瞬间对腾讯云好感倍增,决定先买腾讯云。
一顿操作,发现腾讯云是真的难用:
最最最重要,给把实例绑定了安全组后,外网还是无法访问???(不管了,反正我就是很生气)
对腾讯云太失望了,不得不把最后一根稻草压在阿里云身上。
所幸,阿里云没有让我失望!
咔咔咔,一顿操作:
密码中含有@符号,但连接一点毛病都没有!!!
至此,问题终于解决了!!!
我已经迫不及待明天去公司验证,但回过头一看,已经是深夜一点半。
自言自语的说了一句:"睡吧,卷王"
经过对比,发现配置只需要生产的配置仅需要在测试的配置上加多一个:
修复最磨人的bug,往往仅需要一点小小的改动~
为什么测试环境没报错了呢???
因为测试环境的redis集群不需要密码
django的redis怎么用缓存sudoapt-getinstallredis-server
然后为了能在Django中使用redis,还需要安装redisforDjango的插件:
ipinstalldjango-redis
这是一个开源的项目,github地址是,感谢作者。
那么现在就是在Django的settings中配置了。
如何在django中使用redis做缓存服务器
实现缓存的方式,有多种,本地内存缓存,数据库缓存,文件系统缓存。这里介绍使用Redis数据库进行缓存。
环境
redis
django-redis
配置
settings.py
CACHES={??"default":{????"BACKEND":"django_redis.cache.RedisCache",????"LOCATION":"redis://127.0.0.1:6379/1",????"OPTIONS":{??????"CLIENT_CLASS":"django_redis.client.DefaultClient",??????"PASSWORD":"mysecret"
????}
??}
}
pythonmanage.pycreatecachetable1
缓存有站点缓存,和单个view缓存
站点缓存:?
settings.py
??MIDDLEWARE=[??#站点缓存,注意必须在第一个位置
??'django.middleware.cache.UpdateCacheMiddleware',
??...??#站点缓存,注意必须在最后一个位置
??'django.middleware.cache.FetchFromCacheMiddleware',
]
视图缓存:?
views.py
fromdjango.shortcutsimportrenderfromdjango.views.decorators.cacheimportcache_pagefromcache.modelsimportFoo#在需要缓存的视图上添加装饰器,参数是设置timeout超时时间,单位是秒,@cache_page(60)defindex(request):
??bar=Foo.objects.all()??returnrender(request,'cache/index.html',{'bar':bar})
如何django中用redis缓存服务器,求详细教程。django-redis中文文档
AndreyAntukh,niwi@niwi.be4.7.0
翻译:RaPoSpectre
1.介绍
django-redis基于BSD许可,是一个使Django支持Rediscache/session后端的全功能组件.
1.1为何要用django-redis?
因为:
持续更新
本地化的redis-pyURL符号连接字符串
可扩展客户端
可扩展解析器
可扩展序列器
默认客户端主/从支持
完善的测试
已在一些项目的生产环境中作为cache和session使用
支持永不超时设置
原生进入redis客户端/连接池支持
高可配置(例如仿真缓存的异常行为)
默认支持unix套接字
支持Python2.7,3.4,3.5以及3.6
1.2可用的django-redis版本
稳定版本:4.7.0
稳定版本:3.8.4
1.3我该使用哪个版本
版本号像3.6,3.7…等的是主要发行版本,会包含向后不兼容的内容.跟多信息请在升级前阅读升级日志.
版本号像3.7.0,3.7.1…等的是小更新或者bug修复版本,一般只会包含bug修复,没有功能更新.
1.4依赖
1.4.1Django版本支持
django-redis3.8.x支持django1.4,1.5,1.6,1.7(或许会有1.8)
django-redis4.4.x支持django1.6,1.7,1.8,1.9和1.10
1.4.2RedisServer支持
django-redis3.x.y支持redis-server2.6.x或更高
django-redis4.x.y支持redis-server2.8
Django+Celery+Redis使用pipinstalldjango==2.1.4
pipinstallredis==3.2.0
pipinstallcelery==4.4.2
pipinstalleventlet#celery4.0+版本以后不支持在windows运行,还需额外安装eventlet库
settings.py配置
在同级目录下还需要添加celery.py文件
在settings.py同级的init.py写入下面内容确保项目启动时即加载Celery实例:
在模块中添加tasks.py
最后可在其他文件中调用此任务函数,以达到异步:
启动redis和django然后打开terminal输入如下内容启动worker:
更具体的介绍可以参考;utm_medium=socialutm_oi=902276942420668416
结语:以上就是首席CTO笔记为大家整理的关于django怎么使用redis的全部内容了,感谢您花时间阅读本站内容,希望对您有所帮助,更多关于django怎么使用redis的相关内容别忘了在本站进行查找喔。