配置redis作为Django缓存和session存储后端

django.contrib.auth.login()记录用户的登录状态:login(request, user)使用Django的session框架来将用户的ID保存在session

Django项目默认启用Session

打开settings.py文件,在项MIDDLEWARE_CLASSES中启用Session中间件

1. 首先中间件是什么

Django中的中间件是一个轻量级、底层的插件系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出。中间件的设计为开发者提供了一种无侵入式的开发方式,增强了Django框架的健壮性,其它的MVC框架也有这个功能,名称为AOP。

这里的session中间件就是给每个请求request(由django产生的)对象动态添加一个session属性,如果不开启,将不会给request对象添加session属性,这就是为什么WSGIRequest类没session属性的原因,因为是动态添加的

by the way,因为开启了django.contrib.auth.middleware.AuthenticationMiddleware 用户认证的中间件,所以它们在每个请求上提供一个request.user属性,且这个user属性作为模板变量会自动传入模板中,可以直接在模板中使用user对象

2. 说完session中间件,再来说说session的存储方式

settings.py文件,设置SESSION_ENGINE项指定Session数据存储的方式,可以存储在数据库、缓存、Redis等。【默认存储在数据库中】

这里选择存储在缓存中,因为session经常存取,只要网站被访问,就会读取session,且数据量小,这里可以选择用缓存来存储

django缓存的存储方式:一般来说缓存是存储在内存中的,但是基于内存的缓存有一个缺点:因为缓存数据是存储在内存中的,所以如果你的服务器宕机数据就会丢失,所以这里选择使用redis来存储缓存,redis的所有数据是放在内存中的,且可基于内存亦可持久化,所以这里我们选择redis作为django的缓存。

这里就需要在setting中配置

#django的缓存配置
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/9",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

而session作为缓存存储,所以session存储在redis中

# 使用Redis缓存session
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"

by the way :使用redis缓存准测:

  1. 经常存取,且不会改变的数据可以用缓存来存储,比如首页数据,数据量虽然大,但它不会经常改变

  2. 经常使用(这里的经常使用的意思是经常作dml操作),但数据量小,比如说购物车数量的改变,就可以使用缓存

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值