• python django中使用redis


    一、使用redis缓存准测

    1. 经常存取,且不会改变的数据可以用缓存来存储,比如首页数据,数据量虽然大,但它不会经常改变;
    2. 经常使用(这里的经常使用的意思是经常作dml操作),但数据量小,比如说购物车数量的改变,就可以使用缓存;

    二、python中使用redis

    安装:pip install redis

    2.1、redis连接

    普通连接

    1 import redis
    2 
    3 r = redis.Redis(host='127.0.0.1', port=6379)
    4 r.set('foo', 'Bar')
    5 print(r.get('foo'))

    redis连接池连接

    redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。同时为了保证连接池的唯一,还需要用到单例,将连接池单独写入一个py文件中

    1 import redis
    2 
    3 pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
    4 r = redis.Redis(connection_pool=pool)
    5 r.set('foo', 'Bar')
    6 print(r.get('foo'))

    2.2、redis数据类型操作

    参考文档:https://www.cnblogs.com/maoruqiang/p/11158520.html

    string操作

    hash操作

    list操作

    set操作

    其他操作

    管道操作

    三、django中使用redis

    3.1、方式一(redis)

    # redis_pool.py
    import redis
    POOL = redis.ConnectionPool(host='127.0.0.1', port=6379,password='1234',max_connections=1000)
    import redis
    from django.shortcuts import render,HttpResponse
    from utils.redis_pool import POOL
    
    def index(request):
        conn = redis.Redis(connection_pool=POOL)
        conn.hset('kkk','age',18)
    
        return HttpResponse('设置成功')

    3.2、方式二(django-redis)

    参考文档:https://django-redis-chs.readthedocs.io/zh_CN/latest/

                      https://www.cnblogs.com/tantanjishu/p/11697396.html

    安装:pip install django-redis

    3.2.1、Redis作为django缓存的配置(附作session存储的配置)

    Tip:redis作session存储时,需要在django setting.py --> MIDDLEWARE中开启'django.contrib.sessions.middleware.SessionMiddleware'(默认开启)。

    # redis作为Django缓存和session存储后端的标准配置
    
    # Django的缓存配置
    CACHES = {
        "default":{
        "BACKEND":"django_redis.cache.RedisCache",
        "LOCATION":"redis://127.0.0.1:6379/9",
        "OPTIONS":{
            "CLIENT_CLASS":"django_redis.client.DefaultClient",
            "CONNECTION_POOL_KWARGS": {"max_connections": 100},
            "PASSWORD": "密码",       # 可不写,密码
            "DECODE_RESPONSES":True   # 可不写,redis get的数据是字符串格式(unicode,而不是bytes)
        }
    }}
    
    # 配置session存储3种方式
    # 存储在数据库中,如下设置可写可不写,是默认存储模式
    SESSION_ENGINE = "django.contrib.sessions.backends.db"
    # 存储在缓存中,存储在本机内存中,如果丢失则不能找回,比数据库的方式读写更快
    SESSION_ENGINE = "django.contrib.sessions.backends.cache"
    # 混合存储:优先从本机内存中存取,如果没有则冲数据库中存取
    SESSION_ENGINE = "django.contrib.sessions.backends.cache_db"
    
    SESSION_CACHE_ALIAS = "default"   # default是上面CACHE的字典key

    3.2.2、django-redis使用

     1 from django_redis import get_redis_connection
     2 from django.core.cache import cache
     3 
     4 //timeout为过期时间,单位:秒,timeout=0为立即过期, timeout为None永不超时
     5 cache.set(key, val, timeout)
     6 
     7 //ttl搜索过期时间,返回值:0--标示key不存在或过期,
     8 //None--key存在,但是没有设置过期时间
     9 cache.ttl(key)
    10 
    11 //expire指定一个key的过期时间
    12 cache.expire(key, timeout)
    13 
    14 //persist设置key永不过期
    15 chache.persist(key)
    16 
    17 # 获取连接redis的连接池实例
    18 con = get_redis_connection('default')
    19 # 调用python redis的函数
    20 sku_ids = con.lrange('aa', 0, 4)
  • 相关阅读:
    利用Form组件和ajax实现的注册
    基于ajax实现的登录
    【字符串】【kmp模板】
    【字符串入门专题1】 I
    【字符串入门专题1】A
    【最短路入门专题1】H
    【最短路入门专题1】D
    【最短路入门专题1】E
    【最短路径入门专题1】K
    【多校连萌2】D题 ykc想吃好吃的【补题】【最大子段和变形题】
  • 原文地址:https://www.cnblogs.com/wsongl/p/14463782.html
Copyright © 2020-2023  润新知