首先先来说一下缓存的基本操作
from django.core.cache import cache
# 设置缓存数据, version用来控制版本,不同的版本之间的数据不互通
cache.set(key, value, timeout=default_timeout, version)
# 获取缓存的数据,如果设置了default,则在没有获取到改key的值时,使用default
cache.get(key, default, version)
# 与set相似,如果key已经存在的话,将不会添加
cache.add(key, value, timeout=default_timeout, version)
# 获取key的值,如果不存在则设置值为default
cache.get_or_set(key, default, timeout=default_timeout, version)
# 其中key为列表,返回的一个字典
cache.get_many(key, version)
# 设置多个缓存数据
cache.set_many(dict, timeout)
# 删除key键的值
cache.delete(key, version)
# key为一个列表,用来删除多个键的数据
cache.delete_many(key, version)
# 删除所有的缓存的数据
cache.clear()
# 为key设置新的到期时间,设置timeout秒后过期
cache.touch(key, timeout = DEFAULT_TIMEOUT, version)
# 对key的值进行增加
cache.incr(key, delta=1, version)
# 对key的值进行减少
cache.decr(key, delta=1, version)
# 关闭缓存连接
cache.close()
如何在settings中配置redis
我们需要先安装相应的包
pip install django-redis
pip install hiredis
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "127.0.0.1:6379",
"OPTIONS": {
"PASSWORD": "yourpwd"
"CLIENT_CLASS": "django_redis.client.DefaultClient",
"PICKLE_VERSION": -1 # django-redis使pickle来序列化对象,使用最新的pickle版本
"SOCKET_CONNECT_TIMEOUT": 5, # in seconds,建立连接的超时时间
"SOCKET_TIMEOUT": 5, # in seconds, 简历连接后读写操作的超时时间
"CONNECTION_POOL_KWARGS": {"max_connections": 100}# 配置连接池最大连接数
"PARSER_CLASS": "redis.connection.HiredisParser",# 配置解析器
},
'CONNECTION_POLL_CLASS': 'redis.connection.BlockingConnectionPool',
}
}
redis中的锁
可以防止数据的混乱
with cache.lock("somekey"):
do_some_thing()
redis中的操作
# 如果key不存在或已过期,则为0,否则为有效时间
cache.ttl(key);
# 设置立即到期
cache.persist(key)
# 重新设置超时时间
cache.expire(key, timeout)