缓存的目的:
1·减轻服务器压力,提升服务器速度,提升用户体验;
2·对处理过的数据,进行存储,再次使用的时候,直接从缓存中取出;
3·默认使用内存及服务器;一种中间数据的介质。
缓存的分类
1·装饰器缓存:
@cache_page(20) 20—>秒单位,缓存保留的时间。
eg:
@cache_page(20)
def testCache(request)
time.sleep(3)
return HttpResponse('你好‘)’
2·基于数据库的缓存:
1·创建缓存表:python manage.py createcachetable [table_name]
2·setting中设置缓存信息
CACHES
default
‘BACKEND’: ‘django.core.cache.backends.db.DatabaseCache’
‘LOCATION’: ‘my_cache_table’
‘TIMEOUT’: 60 * 5 缓存时间以set方法为主
eg:
CACHES={
‘default’:{
‘BACKEND’:‘django.core.cache.backends.db.DatabaseCache’,
‘LOCATION’:‘my_cache_table’,
‘TIMEOUT’:60,
‘KEY_PREFIX’:‘python190x’,
}
}
3·内存级缓存redis:
1·setting中设置:
CACHES={
‘redispython190x’:{
‘BACKEND’:‘django_redis.cache.RedisCache’,
‘LOCATION’:‘redis://127.0.0.1:6379/1’,
‘OPTIONS’:{
‘CLIENT_CLASS’:‘django_redis.client.DefaultClient’
}
}
}
2·Django-redis-cache
使用redis实现django-cache的扩展
操作缓存的API没有发生任何变更
变更的就是连接缓存的配置
常见的有两个实现
django-redis
http://django-redis-chs.readthedocs.io/zh_CN/latest/#django
pip install django-redis
django-redis-cache
https://pypi.python.org/pypi/django-redis-cache/
pip install django-redis-cache
查看redis缓存
select 1
keys *
get :1:news
查看过期时间 tts :1:news
4·多缓存:
CACHES = {
‘default’: {
‘BACKEND’: ‘django.core.cache.backends.db.DatabaseCache’,
‘LOCATION’: ‘my_cache_table’,
‘TIMEOUT’: 60 * 5
},
'redis_backend': {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
}
}
写多套配置,定义不同的名字
存入缓存的时候,获取不同的缓存对象
想使用哪个缓存就创建哪个缓存的实例对象
装饰器缓存
@cache_page(30, cache='cache_name')
可以使用装饰器 指定想要的数据库
数据库缓存
cache = caches['cache_name']