一、装置&配置

1、装置

pip install django-redis

注:版本抉择

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
Redis Server 反对:
django-redis 3.x.y 反对 redis-server 2.6.x 或更高
django-redis 4.x.y 反对 redis-server 2.8.x 或更高

2、配置

在django我的项目中的setting.py文件中配置:

CACHES = {    "default": {        "BACKEND": "django_redis.cache.RedisCache",        "LOCATION": "redis://127.0.0.1:6379/1",        "OPTIONS": {            "CLIENT_CLASS": "django_redis.client.DefaultClient",        }    }}

或者

CACHES = {    "default": {        "BACKEND": "django_redis.cache.RedisCache",        "LOCATION": "redis://127.0.0.1:6379/1",        "OPTIONS": {            "CLIENT_CLASS": "django_redis.client.DefaultClient",            "PASSWORD": "mysecret"        }    }}

作为session backend的应用配置:

Django 默认能够应用任何 cache backend 作为 session backend, 将 django-redis 作为 session 贮存后端不必装置任何额定的 backend

SESSION_ENGINE = "django.contrib.sessions.backends.cache"SESSION_CACHE_ALIAS = "default"

Pickle版本

django-redis 应用 pickle 序列化简直所有数据,默认应用-1=最新版本
CACHES = {

"default": {    # ...    "OPTIONS": {        "PICKLE_VERSION": -1  # Use the latest protocol version    }}

}

设置超时工夫

SOCKET_CONNECT_TIMEOUT : socket 建设连贯超时设置
SOCKET_TIMEOUT : 连贯建设后的读写操作超时设置

CACHES = {    "default": {        # ...        "OPTIONS": {            "SOCKET_CONNECT_TIMEOUT": 5,  # in seconds            "SOCKET_TIMEOUT": 5,  # in seconds        }    }}

反对压缩

django-redis 反对压缩, 但默认是敞开的. 你能够激活它:

CACHES = {    "default": {        # ...        "OPTIONS": {            "COMPRESSOR": "django_redis.compressors.zlib.ZlibCompressor",        }    }}

应用 lzma 压缩的例子

import lzmaCACHES = {    "default": {        # ...        "OPTIONS": {            "COMPRESSOR": "django_redis.compressors.lzma.LzmaCompressor",        }    }}

二、django_redis应用

1、设置key的ttl

from django.core.cache import cache//timeout为过期工夫,单位:秒,timeout=0为立刻过期, timeout为None永不超时cache.set(key, val, timeout) //ttl搜寻过期工夫,返回值:0--标示key不存在或过期,//None--key存在,然而没有设置过期工夫cache.ttl(key)//expire指定一个key的过期工夫cache.expire(key, timeout)//persist设置key永不过期chache.persist(key)

2、redis锁

django-redis 反对 redis 分布式锁. 锁的线程接口是雷同的, 因而你能够应用它作为代替.
应用 python 上下文管理器调配锁的例子:

from django.core.cache import cachewith cache.lock(key):    do_something()

3、扫描key

from django.core.cache import cachecache.keys("demo_*")// redis 的 server side cursors 2.8 版及以上, // 应用 iter_keys 取代 keys 办法cache.iter_keys("demo_*")
from django_redis import get_redis_connectionscan_res = conn.scan_iter('key_*')