• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LDLX@Y火星
博客园    首页    新随笔    联系   管理    订阅  订阅

django中使用redis和多缓存机制

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")

 

posted @ 2020-03-13 11:08  火星黑洞  阅读(558)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3