django存储session至redis中


安装实验所需模块

pip3 install django-redis

pip3 install Django==2.1.5

创建django项目

django-admin startproject redis_site
  • 进入项目文件夹 redis_site
    可以看到生成了一个manage.py文件以及项目同名的主项目文件夹,进入主项目文件可以看到一些初始文件
    创建项目

修改settings.py文件

  • settings.py中配置django cache
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://172.22.0.9:6379",    # redis容器的ip:端口
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",    #客户端
            "PASSWORD": "",            #设置redis密码
#             "PARSER_CLASS": "redis.connection.HiredisParser",    #解析器
#             "SOCKET_TIMEOUT": 10,        #连接超时时间
#             "CONNECTION_POOL_CLASS_KWARGS": {
#                 "max_connections": 2,             #连接池的最大连接数,满足高并发需求
#             }
        }
    }
}
  • settings.py文件中加入一行,如下所示:
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

作用:django.contrib.sessions.backends.cache 设置为存储引擎

设置完后如下:


设置配置文件
  • 创建应用 appredis
django-admin startapp appredis
image.png
  • 编写session视图函数 appredis 文件夹下的 views.py
    定义setget函数
from django.shortcuts import render,HttpResponse

def set_session(request):
    request.session['username']='shark'
    request.session['age']=18
    return HttpResponse("设置sesson成功")

def get_session(request):
    username=request.session['username']
    age = request.session['age']
    return HttpResponse(username+":"+str(age))
image.png
  • 在主路由下的urls.py文件中添加url路由
from django.contrib import admin
from django.urls import path
from appredis import views
urlpatterns = [
    path('set_session/',views.set_session),
    path('get_session/',views.get_session),
    path('admin/', admin.site.urls),
]
  • 确保启动redis服务端,默认方式启动
redis-server  /etc/redis/6379.conf

redis-cli  -p  6379

发送ping命令得到pong即可
image.png
  • 启动django
python3 manage.py runserver
  • 访问视图,设置一条session信息,存入redis数据库


    image.png
  • 访问视图,获取session信息


    image.png
  • 检查redis数据库

redis-cli -p 6379

127.0.0.1:7001> keys *
image.png
  • 查看此 key 的值


    image.png

你可能感兴趣的:(django存储session至redis中)