django中的redis缓存

本文详细介绍了Django中的缓存操作,包括基本的缓存设置、获取、增删改查等方法,并深入探讨了如何在Django的settings中配置Redis作为缓存后端,以及如何使用Redis实现数据锁,防止数据混乱。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

	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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值