django中使用redis
首页,需要电脑上装redis服务
下载地址:
https://github.com/MicrosoftArchive/redis/releases
Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择,这里我们下载 Redis-x64-xxx.zip压缩包到 D 盘redis文件夹下。
然后,可以启动一个redis的临时服务
打开cmd,进入到刚才解压到的目录,启动临时服务:redis-server.exe redis.windows.conf (备注:通过这个命令,会创建Redis临时服务,不会在window Service列表出现Redis服务名称和状态,此窗口关闭,服务会自动关闭。)
同样,打开另一个cmd窗口,客户端调用:redis-cli.exe -h 127.0.0.1 -p 6379
查看redis的相关操作
window安装redis可以参考 https://www.cnblogs.com/skmobi/p/11696620.html 的博客
django中的配置,在seeting页面中添加如下配置
CACHES = {
'default': {
'BACKEND': 'django_redis.cache.RedisCache',
'LOCATION': 'redis://127.0.0.1:6379/1',
'OPTIONS': {
"CLIENT_CLASS": "django_redis.client.DefaultClient"
}
}
}
然后添加一个url路由
from django.urls import path
from App import views
app_name = 'app'
urlpatterns = [
path('news/', views.news, name="news"),
]
接着去views中去添加这个视图函数
# @cache_page(30)
def news(request):
# 自定义设置缓存
result = cache.get("news")
if result:
return HttpResponse(result)
new_list = []
for i in range(10):
new_list.append("最近贸易战又开始了%d" % i)
sleep(5)
data = {
"new_list": new_list
}
response = render(request, 'news.html', context=data)
cache.set('news', response.content, timeout=60)
return response
上面是自定义写的缓存,也可以直接使用装饰器@cache_page(30)
这样就可以将news页面缓存在redis中了
接下来说一下多缓存机智
首页在setting中配置
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'django_cache',
'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"
}
}
}
上面一个是数据库缓存,一个是redis缓存,如果想要有数据库缓存,就需要先在数据库中创建一个缓存
python manage.py createcachetable 数据库名字例如
python manage.py createcachetable django_cache
然后你可以链接数据库查看到数据库中多了一个django_cache表
然后再视图函数views中调用的时候指定缓存到哪个里面
@cache_page(60, cache="default")
或者
@cache_page(60, cache="redis_backend")