Django-08-DjangoCache
缓存框架的核心目标
- 较少的代码
- 缓存应该尽可能快
- 因此围绕缓存后端的所有框架代码应该保持在绝对最小值,特别是对于获取操作
- 一致性
- 缓存API应该是提供跨越不同缓存后端的一致接口
- 可扩展性
- 基于开发人员的需求,缓存API应该可以在应用程序级别扩展
缓存
- django内置了缓存框架,并提供了几种常用的缓存
- 基于Memcached缓存
- 使用数据库进行缓存
- 使用文件系统进行缓存
- 使用本地内存进行缓存
- 提供缓存扩展接口
缓存配置
创建缓存表
1
python manage.py createcachetable [table_name]
缓存配置
1
2
3
4
5
6
7
8
9
10
11
12CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'my_cache_table',
'TIMEOUT': '60',
'OPTIONS': {
'MAX_ENTRIES': '300',
},
'KEY_PREFIX': 'rock',
'VERSION': '1',
}
}缓存使用
- 在视图中使用(使用最多的场景)
- @cache_page()(函数装饰器)例如:@cache_page(60, cache=’redis_backend’)
- time 秒 60*5 缓存五分钟
- cache 缓存配置, 默认default,
- key_prefix 前置字符串
缓存底层
获取cache
- ```
from django.core.cache import caches
cache = caches[‘cache_name’]1
2
3
4
5
- 获取cache
- ```
from django.core.cache import cache
- ```
缓存操作
- cache.set
- key
- value
- timeout
- get
- add
- get_or_set
- get_many
- set_many
- delete
- delete_many
- clear
- incr 增加
- incr(key, value) key对应的值上添加 value
- decr 减少
- decr(key, value) key对应的值上减少value
- 如果value不写,默认变更为1
- cache.set
使用Redis做缓存
常见的有两个实现
- django-redis
- django-redis-cache
配置和内置的缓存配置基本一致
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/1", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } }
用法和内置缓存使用一样
思维导图
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kinmfer's Blogs!
评论
ValineLivere