python django中使用redis
2021-06-10 09:02
标签:tip backend 密码 location _id ant scac default 调用 1. 经常存取,且不会改变的数据可以用缓存来存储,比如首页数据,数据量虽然大,但它不会经常改变; 安装:pip install redis 普通连接 redis连接池连接 redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。同时为了保证连接池的唯一,还需要用到单例,将连接池单独写入一个py文件中。 参考文档:https://www.cnblogs.com/maoruqiang/p/11158520.html string操作 hash操作 list操作 set操作 其他操作 管道操作 参考文档:https://django-redis-chs.readthedocs.io/zh_CN/latest/ https://www.cnblogs.com/tantanjishu/p/11697396.html 安装:pip install django-redis Tip:redis作session存储时,需要在django setting.py --> MIDDLEWARE中开启‘django.contrib.sessions.middleware.SessionMiddleware‘(默认开启)。 python django中使用redis 标签:tip backend 密码 location _id ant scac default 调用 原文地址:https://www.cnblogs.com/wangsl1204/p/14463782.html一、使用redis缓存准测
2. 经常使用(这里的经常使用的意思是经常作dml操作),但数据量小,比如说购物车数量的改变,就可以使用缓存;二、python中使用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‘))
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数据类型操作
三、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)
3.2.1、Redis作为django缓存的配置(附作session存储的配置)
# 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)