Django之redis-session

一:安装

pip3 install django-redis-sessions

#或者
pip3 install django-redis

二:存储

setting.py默认开启session

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',  # 默认开启
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

session存储方式

1:数据库(默认存放在django-session)

2:缓存

3:混合存储

# 存放在数据库中 (默认)
SESSION_ENGINE='django.contrib.sessions.backends.db'

# 存放在缓存中
SESSION_ENGINE='django.contrib.sessions.backends.cache'

# 先从缓存中取,如果没有再从数据库中取。
SESSION_ENGINE='django.contrib.sessions.backends.cached_db'
 

如果session存储在数据库中,需要在项INSTALLED_APPS中安装Session应用

 三:使用

settings配置文件

redis-session配置方式一

SESSION_ENGINE = 'redis_sessions.session'  # session存储引擎

SESSION_REDIS_HOST = 'localhost'  # redis服务的ip

SESSION_REDIS_PORT = 6379   # redis服务端口号

SESSION_REDIS_DB = 2     # redis中的哪个数据库。 (redis中默认有16个数据库,数据库编号从0开始)

SESSION_REDIS_PASSWORD = ''  # redis服务密码

SESSION_REDIS_PREFIX = 'session_key'   # sessionid键的前缀。

redis-session配置方式二

# Django的缓存配置 (用redis做缓存)
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",  #redis存储
        "LOCATION": "redis://127.0.0.1:6379/9", # redis服务器 以及存储位置
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

# 配置session存储 (用Django的默认缓存存储session)
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"   # sessionid中的key

路由层

urlpatterns = [
    
    url(r'^set_session/', views.set_session),
    url(r'^get_session/', views.get_session),
]

视图层

from django.shortcuts import render,HttpResponse
import redis
# Create your views here.


def get_session(request):

    if request.session.has_key('username'):
        username = request.session['username']
        print(username) #  SR
return HttpResponse(username)

def set_session(request):
    request.session['username'] = 'SR'
    request.session['age'] = 18
    request.session.set_expiry(5)  # 0:表示关闭浏览器过期;None:表示永不过期。 默认两周后过期。
    return HttpResponse('设置session')

 PS:上述redis已经存在该session

原文地址:https://www.cnblogs.com/SR-Program/p/12423761.html