Django缓存
概念
由于每次对*(关系型)*数据库进行查询时,需要进行复杂的查询操作,浪费了很多的时间,缓存将经常需要查询的内容单独存储,可提高响应速度。
使用
在Django中使用缓存,需要在settings.py
文件中进行配置
# 可以配置多个缓存配置
# 例如可以为应用 “user” 单独配置缓存
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.DatabaseCache',
'LOCATION': 'my_cache_table',
'TIMEOUT': 300, # 缓存保存时间 单位秒 默认值为300
'OPTIONS': {
'MAX_ENTRIES': 300, # 缓存最大数据条数
'CULL_FREQUENCY': 2, # 缓存条数达到最大值时,删除1/x的缓存数据
}
}
# 为应用 “user” 单独配置
'user': {
'BACKEND': 'django.core.cache.backends.DatabaseCache',
'LOCATION': 'my_cache_table',
'TIMEOUT': 300, # 缓存保存时间 单位秒 默认值为300
'OPTIONS': {
'MAX_ENTRIES': 300, # 缓存最大数据条数
'CULL_FREQUENCY': 2, # 缓存条数达到最大值时,删除1/x的缓存数据
}
}
}
整体缓存策略
概念
当请求到达服务器视图函数时,试图函数将请求内容拿到后全部放入缓存数据库,等待下次访问,优先查询缓存数据库,如果有缓存,则将全部缓存返回给浏览器。
用法
使用装饰器修饰视图函数
装饰器名称@cache_page(time)
参数代表过期时间
需要导入装饰器
from django.views.decorators.cache import cache_page
局部缓存策略
概念
可手动创建cache以及删除cache,进一步提高响应速度
用法
先引入cache对象
方式一:使用cache[‘CACHE配置key’]导入具体对象
from django.core.cache import caches
cache1 = caches['myalias']
cache2 = caches['myalias_2']
方式二:
from django.core.cache import cache
相当于直接引入CACHES配置中的’default’项
方法
-
cache.set(key, value, timeout)
- 存储缓存key: 缓存的key,字符串类型
value: Python对象
timeout: 缓存存储时间(s),默认为CACHES中的TIMEOUT值
返回值: None
-
cache.get(key)
- 获取缓存key: 缓存的key
返回值: 为key的具体值,如果没有数据,则返回None
-
cache.add(key, value)
- 存储缓存,只在key不存在时生效返回值: True[存储成功] or False[存储失败]
-
cache.get_or_set(key, value, timeout)
- 如果未获取到数据,则执行set操作返回值: value
-
cache.set_many(dict, timeout)
- 批量存储缓存dict: key和value 的字典
timeout: 存储时间(s)
返回值: 插入不成功的key的数组
-
cache.get_many(key_list)
- 批量获取缓存数据key_list: 包含key得的数组
返回值: 取到的key和value的字典
-
cache.delete(key)
- 删除key的缓存数据返回值: None
-
cache.delete_many(key_list)
- 批量删除返回值: None