django中使用redis和django缓存

django中使用redis

# 两种方式

         -方式一:自定义的通用方案(跟框架无关)

-写一个py文件:redis_pool.py                                   #连接池
            import redis
            POOL=redis.ConnectionPool(max_connections=10)       生成POOL。做成单例
        -在用的位置,导入直接使用
             conn = redis.Redis(connection_pool=POOL)
            conn.incrby('a1')
 

 -方式二:django使用redis          -------自带连接池

   -django中有个模块,django-redis,方便我们快速集成redis
        -1 下载:pip install django-redis
        -2 配置文件配置:
            CACHES = {
                "default": {
                    "BACKEND": "django_redis.cache.RedisCache",
                    "LOCATION": "redis://127.0.0.1:6379",
                    "OPTIONS": {
                        "CLIENT_CLASS": "django_redis.client.DefaultClient",
                        "CONNECTION_POOL_KWARGS": {"max_connections": 100}
                        # "PASSWORD": "123",
                    }
                }
            }
            
        -3 在使用的地方,导入直接使用
        from django_redis import get_redis_connection
        class MyResponseView(APIView):
            def get(self, request):
                conn = get_redis_connection()  # 从连接池中拿出一个链接
                conn.incrby('a1')
                conn.set('name','彭于晏')
                return APIResponse()

 django缓存

# django 是大而全的框架,内置了很多web开发需要的东西,缓存内置了

# 缓存:可以把django中的一个变量(数据),存放到某个位置,下次还可以取出来

# 之前用过:默认放在:内存中,其实可以放在文件中,数据库,redis。。。。
from django.core.cache import cache
cache.set('key','value',5) # 存放值       5为有效时间
res=cache.get('key') # 取值


# 通过配置,控制存放在哪,只要如下写,就会放在redis中
   CACHES = {
       "default": {
           "BACKEND": "django_redis.cache.RedisCache",
           "LOCATION": "redis://127.0.0.1:6379",
           "OPTIONS": {
               "CLIENT_CLASS": "django_redis.client.DefaultClient",
               "CONNECTION_POOL_KWARGS": {"max_connections": 100}
               # "PASSWORD": "123",
           }
       }
   }

# django缓存最强大之处在于,只要是python的变量,任意类型都可以,尽管使用set设置值


       l = [1, 'lqz', [1, 3, 4, 5, 6], '彭于晏']
       cache.set('ll1', l)
    
# 以后再django中往redis放数据,就用cache即可

# redis的5大数据类型,只支持一层


# 看一下这篇文章:https://www.cnblogs.com/liuqingzheng/articles/9803351.html
 

 django缓存的强大之处

django缓存最强大之处在于,只要是python的变量,任意类型都可以,尽管使用set设置值

它是通过python所独有的方式,将任意类型的变量,序列化存在redis中-------pickle序列化

        #序列化
    -json序列化---》得到字符串
        json不能序列化对象(自定义的类的对象) 
            -数据结构:数据的组织形式跟下面不一样
        能序列化: 数字,字符串,布尔,列表,字典  时间对象
    -pickle序列化
        -python独有的,二进制形式
        -python可以序列化所有对象---》二进制形式
        -二进制---》返序列化回来---》对象:属性,有方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值