django中的redis缓存

首先先来说一下缓存的基本操作

	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)

你可能感兴趣的:(django学习)