Django中如何配置多类型缓存并在代码中分别调用
Django多缓存配置与使用指南
一、settings.py 缓存配置
在settings.py里,得用CACHES字典配置多个缓存后端,每个后端设置唯一别名,同时指定default缓存(也就是from django.core.cache import cache默认调用的实例)。
示例配置:
CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.db.DatabaseCache', 'LOCATION': 'my_cache_table', # 数据库缓存对应的表名,需先执行createcachetable命令创建 }, 'redis': { 'BACKEND': 'django.core.cache.backends.redis.RedisCache', 'LOCATION': 'redis://127.0.0.1:6379/1', # 按实际Redis地址修改 } }
注意:数据库缓存需要先执行python manage.py createcachetable命令,生成对应的缓存表。
二、代码中调用不同缓存
默认的cache对象只会指向default配置的缓存,要使用其他缓存,得通过django.core.cache.caches按别名获取对应实例。
1. 使用默认数据库缓存
直接导入默认缓存即可:
from django.core.cache import cache # 操作默认缓存 cache.set('key', 'value', timeout=3600) value = cache.get('key')
2. 使用Redis缓存
通过别名redis获取缓存实例:
from django.core.cache import caches # 获取Redis缓存对象 redis_cache = caches['redis'] # 操作Redis缓存 redis_cache.set('redis_key', 'redis_value', timeout=3600) redis_value = redis_cache.get('redis_key')
3. 优化重复调用
如果同一个文件多次使用某一缓存,可在文件顶部定义全局变量,避免重复获取实例:
from django.core.cache import caches # 全局变量存储Redis缓存实例 redis_cache = caches['redis'] # 后续直接调用 redis_cache.set('foo', 'bar')
三、额外注意事项
- 若使用Django自带的
RedisCache(Django 4.0+支持),需先安装依赖:pip install redis;如果用第三方库如django-redis,则需安装对应包并调整BACKEND值为django_redis.cache.RedisCache - 可根据实际需求调整缓存配置参数,比如Redis的密码、连接池设置等
- 视图、模型、任务队列等任意模块中,都可按上述方式导入对应缓存实例使用
内容的提问来源于stack exchange,提问作者Deepali Joshi
相关产品推荐
相关产品推荐

