首页>>后端>>Python->django如何调用redis(django菜鸟教程)

django如何调用redis(django菜鸟教程)

时间:2023-11-30 本站 点击:0

本篇文章首席CTO笔记来给大家介绍有关django如何调用redis以及django菜鸟教程的相关内容,希望对大家有所帮助,一起来看看吧。

本文目录一览:

1、如何在django中使用redis做缓存服务器2、django-redis结合drf实现缓存3、django from django_redis import get_redis_connection后如何为该redis添加分布式锁呢?4、Django连接Redis集群问题排查思路和总结5、如何django中用redis缓存服务器,求详细教程。6、python把字典存到redis怎么使用

如何在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"

       }

   }

}

python manage.py createcachetable1

缓存有站点缓存,和单个view缓存

站点缓存: 

settings.py

   MIDDLEWARE = [    # 站点缓存 , 注意必须在第一个位置

   'django.middleware.cache.UpdateCacheMiddleware',

   ...    # 站点缓存, 注意必须在最后一个位置

   'django.middleware.cache.FetchFromCacheMiddleware',

]

视图缓存: 

views.py

from django.shortcuts import renderfrom django.views.decorators.cache import cache_pagefrom cache.models import Foo# 在需要缓存的视图上添加装饰器, 参数是设置timeout 超时时间, 单位是秒, @cache_page(60)def index(request):

   bar = Foo.objects.all()    return render(request, 'cache/index.html', {'bar': bar})

django-redis结合drf实现缓存

一、django_redis

1. django-redis 基于 BSD 许可, 是一个使 Django 支持 Redis cache/session 后端的全功能组件.

二、django-redis自身优点:

● 持续更新

● 本地化的 redis-py URL 符号连接字符串

● 可扩展客户端

● 可扩展解析器

● 可扩展序列器

● 默认客户端主/从支持

● 完善的测试

● 已在一些项目的生产环境中作为 cache 和 session 使用

● 支持永不超时设置

● 原生进入 redis 客户端/连接池支持

● 高可配置 ( 例如仿真缓存的异常行为 )

● 默认支持 unix 套接字

● 支持 Python 2.7, 3.4, 3.5 以及 3.6

三、推荐使用版本

四、django_redis基本的使用操作:

五、在django项目中的配置格式

六、自定义redis的工具类

七、自定义redis key协议

八、视图调用缓存

django from django_redis import get_redis_connection后如何为该redis添加分布式锁呢?

有效的,不过如果使用redis,他内部是单线程实现,大部分操作不加锁,也不会有并发问题,是安全的。

Django连接Redis集群问题排查思路和总结

直接就一个连接失败

确认账号密码和端口没问题后,问题同事配置有没验证过,他说直接从网上 cv 的,完全没经过验证。坑啊!!!

把生产的配置和测试配置比较好,修改了几个地方

信心满满,重启启动 django shell 测试,结果还是连接不上!这时候心情开始有点糟糕~

冷静, django shell 不行,那用 python shell 直连试试?

一点毛病都没有,直接连上了!

一脸懵逼,这到底是啥问题啊!

结果依然是连接不上。

不知不觉已经到了晚上九点,好累,不想卷了。下班回家吧

回家路上整个脑子都被这个问题困扰着。难道密码中含有 @ 符号的 redis 集群,Django 真的连接不上?反复的问自己。

问了其他同事,生产环境是否有其他的 redis 集群可以用来调试。很遗憾,并没有。

要不,我自己创建一个 redis 集群,把密码设置成含有 @ 符号?

可是,自己本地创建 redis 集群好麻烦啊。要本地安装虚拟机,想到一堆配置就直接劝退。

洗完澡,和老婆聊了 1h 左右的视频。已经到 11 点多,准备睡觉?

那是不可能的,带着问题是很难入睡!哎,这个是老毛病了。

突然想到了一个点,最小试错原则。自己搭建本地集群很麻烦,公司又没有多余的集群。

那直接买一个云版的 redis 集群?说干就干,直接从床上起来,打开电脑。

这时问题又来了,阿里云还是腾讯云?

鉴于双 11 买了腾讯云 2c 4g 8m 的服务器,只要 199 就能 3 年。

再对比之前买阿里云那个 1c 2g 1m 服务器,3 年也要 100 多。

瞬间对腾讯云好感倍增,决定先买腾讯云。

一顿操作,发现腾讯云是真的难用:

最最最重要,给把实例绑定了安全组后,外网还是无法访问???(不管了,反正我就是很生气)

对腾讯云太失望了,不得不把最后一根稻草压在阿里云身上。

所幸,阿里云没有让我失望!

咔咔咔,一顿操作:

密码中含有 @ 符号,但连接一点毛病都没有!!!

至此,问题终于解决了!!!

我已经迫不及待明天去公司验证,但回过头一看,已经是深夜一点半。

自言自语的说了一句:"睡吧,卷王"

经过对比,发现配置只需要生产的配置仅需要在测试的配置上加多一个 :

修复最磨人的 bug,往往仅需要一点小小的改动~

为什么测试环境没报错了呢???

因为测试环境的 redis 集群不需要密码

如何django中用redis缓存服务器,求详细教程。

django-redis 中文文档

Andrey Antukh, niwi@niwi.be 4.7.0

翻译: RaPoSpectre

1. 介绍

django-redis 基于 BSD 许可, 是一个使 Django 支持 Redis cache/session 后端的全功能组件.

1.1 为何要用 django-redis ?

因为:

持续更新

本地化的 redis-py URL 符号连接字符串

可扩展客户端

可扩展解析器

可扩展序列器

默认客户端主/从支持

完善的测试

已在一些项目的生产环境中作为 cache 和 session 使用

支持永不超时设置

原生进入 redis 客户端/连接池支持

高可配置 ( 例如仿真缓存的异常行为 )

默认支持 unix 套接字

支持 Python 2.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.1 Django 版本支持

django-redis 3.8.x 支持 django 1.4, 1.5, 1.6, 1.7 (或许会有 1.8)

django-redis 4.4.x 支持 django 1.6, 1.7, 1.8, 1.9 和 1.10

1.4.2 Redis Server 支持

django-redis 3.x.y 支持 redis-server 2.6.x 或更高

django-redis 4.x.y 支持 redis-server 2.8

python把字典存到redis怎么使用

python把字典存到redis怎么使用

先写个测试redis是否正常连接上

import redis

cache = redis.StrictRedis('172.20.0.227',6379)

存储字符串

key = "javaman_test"

value = "test_string_yy"

cachevalue = cache.get(key)

存储Dict对象,取出来为字符串

value = {"id":1,"name":"sunxy"}

cache.set(key,value,60)

cachevalue = cache.get(key)

print type(value),type(cachevalue)

这时使用eval()对获取的结果转换成dict

cachevalue = cache.get(key)

trans_value = eval(cachevalue)

print type(trans_value),trans_value.get("name")

如果不是一个dict,直接是一个对象呢?

之前用了django中的对象,来看一下

取出来仍然是字符串,如何把对象存进去呢

eval()只是将结果转换成字典,这个肯定不行,我们应该需要将对象存到redis中。

使用pickle模块,在存入到redis中时调用dumps函数,获取后调用loads函数

import pickleredis.set(key,pickle.dumps(xt_industry),180)

pickle.loads(result)

结语:以上就是首席CTO笔记为大家介绍的关于django如何调用redis和django菜鸟教程的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Python/4846.html