Django项目之Django-redis
(声明:本教程仅供本人学习使用,如有人使用该技术触犯法律与本人无关)
(如果有错误,还希望指出。共同进步)
配置
在django_settings中添加如下代码
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"TIMEOUT": 60 * 60 * 3,
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PARSER_CLASS": "redis.connection.HiredisParser",
"PASSWORD": "********",
"CONNECTION_POOL_KWARGS": {"decode_responses": True}
},
}
}
参数解释
CACHES
声明缓存,可以设置多个声明,如default为默认
BACKEND
声明缓存后端类型
可被支持的有
* django.core.cache.backends.db.DatabaseCache
* django.core.cache.backends.dummy.DummyCache
* django.core.cache.backends.filebased.FileBasedCache
* django_redis.cache.RedisCach
【注】 以下以django-redis为例介绍
LOCATION
默认客户端地址,可列表配置多个(主从配置)
TIMEOUT
缓存保存时间, 秒 * 分 * 小时 或 500秒 的形式表示, 默认300秒, None表示永不过期
KEY_PREFIX
缓存key的前缀(默认空)
VERSION
缓存key的版本(默认1)
OPTIONS
缓存后端配置参数
MAX_ENTRIES
最大缓存个数(默认300)
CULL_FREQUENCY
缓存达到最大个数之后,剔除缓存个数的比例
CLIENT_CLASS
可扩展客户端, 可通过设置配置集群客户端
PASSWORD
密码
PARSER_CLASS
可扩展解析器(需要pip install hiredis)redis-py (django-redis 使用的 Redis 客户端) 支持的纯净 Python Redis 解析器可以满足大部分普通任务, 但如果你想要性能更好, 可以使用 hiredis(hiredis 是一个用 C 写的 Redis 客户端, 并且他的解析器可以用在 django-redis 中),如上配置中
SERIALIZER
可扩展序列器
REDIS_CLIENT_CLASS
可扩展redis客户端
REDIS_CLIENT_KWARGS
可扩展redis客户端参数配置
CONNECTION_POOL_CLASS
配置自己的连接池子类
CONNECTION_POOL_KWARGS
连接池配置参数
max_connections
最大连接池配置
[本期重点]decode_responses
配置返回数据以utf8解码,django-redis默认使用redis-py 模块,查看redis-py的源码
使用
#!/usr/bin/python
# -*- coding: utf8 -*-
import os
if __name__ == '__main__':
# 在脚本中使用django框架
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "GreenBook.settings")
import django
django.setup()
from django_redis import get_redis_connection
con = get_redis_connection('default')
print(con)
con.set(633, 'aaa')
con.set(10000, 'dwajdkwdwkalmdlwkamdlamdlw')
print(con.get(633))
# Redis<ConnectionPool<Connection<host=127.0.0.1,port=6379,db=1>>>
# aaa
# 如果不配置decode_responses参数
# con.get(633)结果为:
# b'aaa'