1. 程式人生 > 資料庫 >flask 引入redis 替換原生session儲存session(flask-session)

flask 引入redis 替換原生session儲存session(flask-session)

環境:

  python 3.7.4

  win 10 環境

  redis 服務

 

模組依賴:

  flask

  flask-session

  redis

 

工程目錄:

  

 

 

flask 引入redis 替換原生session儲存session(flask-session)

  在配置檔案中加入redis連線配置以及flask-session 替換為 redis方式

  

 

   

import uuid, os
from redis import Redis

class BasicConfig(object):
    # SECRET_KEY = os.urandom(24)
    SECRET_KEY = str(uuid.uuid4())

class DevConfig(BasicConfig):
    DEBUG = True
    # Mysql 配置
    SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:[email protected]/anec'
    SQLALCHEMY_TRACK_MODIFICATIONS = 'False'
    SQLALCHEMY_POOL_SIZE = 5
    SQLALCHEMY_POOL_TIMEOUT = 15

    # redis 與 flask-session 配置
    SESSION_TYPE = 'redis'  # session儲存格式為redis
    SESSION_REDIS = Redis(host='192.168.0.118', port=6379)
    SESSION_USE_SIGNER = True  # 是否強制加鹽,混淆session
    SESSION_PERMANENT = False  # sessons是否長期有效,false,則關閉瀏覽器,session失效
    PERMANENT_SESSION_LIFETIME = 3600  # session長期有效,則設定session生命週期,整數秒,預設大概不到3小時。

 

  在views 中使用 session

from App.RedisSession import redissession
from flask import session, request


@redissession.route('/')
def default():
    return session.get('key', 'not set')


@redissession.route('/test/')
def test():
    session['key'] = 'test'
    return 'ok'


@redissession.route('/set/')
def set():
    # 從請求頭中獲取 新的Key值
    arg = request.args.get('key')
    print(arg)
    session['key'] = arg
    return 'ok'


@redissession.route('/get/')
def get():
    return session.get('key', 'not set')


@redissession.route('/pop/')
def pop():
    session.pop('key')
    return session.get('key', 'not set')


@redissession.route('/clear/')
def clear():
    session.clear()
    return session.get('key', 'not set')