数据库缓存
- setting.py文件配置
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'db_cache',
}
}
- 创建cache表
表名需和配置文件文件保持一致
python manage.py createcachetable db_cache
- 视图函数中使用
def cache_fruits(request):
print(request.path)
db_cache = caches["default"]
data = db_cache.get("fruits_cache")
if data:
print("缓存命中了,下面展示的是缓存的数据")
return HttpResponse(data)
else:
print("没找到缓存,只能硬着头皮往前冲")
time.sleep(2)
fruits = ["apple", "banana", "orange", "watermelon"]
response = render(request, "my_app/h_pager_cache/cache_fruits.html", {"fruits": fruits})
db_cache.set("fruits_cache", response.content, timeout=10)
return response
Redis缓存
redis安装
- 安装依赖包
pip install django-redis
pip install django-redis-cache
- setting.py文件配置
# 缓存配置
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'db_cache', # 指定缓存表
},
'Redis': {
'BACKEND': "django_redis.cache.RedisCache",
'LOCATION': 'redis://127.0.0.1:6379/1', # 指定缓存数据库
'OPTIONS': {
'CLIENT_CLASS': 'django_redis.client.DefaultClient',
}
},
}
- 视图函数中使用
def redis_cache(request):
cache = caches["Redis"]
result = cache.get("fruits") # 获取redis的缓存
if result:
print("缓存命中了,下面展示的是缓存的数据")
return HttpResponse(result)
else:
print("没找到缓存,只能硬着头皮往前冲")
time.sleep(5)
fruits = ["apple", "banana", "orange"]
response = render(request, "my_app/h_pager_cache/cache_fruits.html", {"fruits": fruits})
cache.set("fruits", response.content, timeout=600)
return response
Memcache缓存
Mecache安装
- 依赖安装
pip install python-memcached
- setting.py文件配置
'Memcached': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211'
}
- 视图函数中使用
def mem_cache(request):
cache = caches["Memcached"]
result = cache.get("fruits") # 获取redis的缓存
if result:
print("缓存命中了,下面展示的是缓存的数据")
return HttpResponse(result)
else:
print("没找到缓存,只能硬着头皮往前冲")
time.sleep(5)
fruits = ["苹果", "香蕉", "橘子", "西瓜"]
response = render(request, "my_app/h_pager_cache/cache_fruits.html", {"fruits": fruits})
cache.set("fruits", response.content, timeout=300)
return response
程序层缓存
from django.views.decorators.cache import cache_page
@cache_page(30) # 设置过期时间30秒
def dev_cache(request):
fruits = ["苹果", "香蕉", "橘子", "西瓜"]
return render(request, "my_app/h_pager_cache/cache_fruits.html", {"fruits": fruits})