Django cache
- Django版本:3.3.6
- Python版本:3.6.7
使用redis数据库,实现缓存机制
seteings中配置如下
CACHES = {
"default": {
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/0",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
},
}
}
views函数
def news(request):
res = cache.get("news")
if res:
return HttpResponse(res)
new_list = ["新冠状病毒仍在继续蔓延" + str(i) for i in range(10)]
time.sleep(5)
data = {
"news_list": new_list,
}
response = render(request, "news.html", context=data)
# 设置缓存
cache.set("news", response.content, ex=60)
return response
这样请求url时,数据是可以成功访问,缓存机制已经实现,但是在redis数据库中没有查询到存储的key值,尝试多次,修改了views函数中,redis的链接方式,可在数据库中查取到存储的key值
修改后的views如下
def news(request):
redis_pool = redis.ConnectionPool(host="127.0.0.1", port=6379, password="", db=0)
redis_ob = redis.Redis(connection_pool=redis_pool)
res = redis_ob.get("news")
if res:
return HttpResponse(res)
new_list = ["新冠状病毒仍在继续蔓延" + str(i) for i in range(10)]
time.sleep(5)
data = {
"news_list": new_list,
}
response = render(request, "news.html", context=data)
# 设置缓存
redis_ob.set("news", response.content, ex=60)
return response
查看redis数据库如下