djangoはセッションエラーredisをredisで格納する.exceptions.ResponseError:NOAUTH Authentication requiredの解決策

1997 ワード

問題の説明
セッションをredisで保存したいのでsettingsにいます.pyファイルでは、次のように設定されています.
# session       redis   
SESSION_ENGINE='redis_sessions.session'
#     ip
SESSION_REDIS_HOST='localhost'
#  redis   
SESSION_REDIS_PORT=6379
#  redis  1      session(redis  16    ,   0  )
SESSION_REDIS_DB=1
#    redis  
SESSION_REDIS_PASSWORD='mypassword'
#   redis  session    "session",    session
SESSION_REDIS_PREFIX='session'

しかし、ブラウザにURLを入力してセッションを保存するステップを実行すると、エラーが発生しました.エラーの内容は以下の通りです.
redis.exceptions.ResponseError: NOAUTH Authentication required
エラーメッセージから推測すると、問題はredisのパスワードに現れます.そこでredisのパスワードをキャンセルし(redis.windows.confファイルを変更すればいい)、もう一度試してみました.
今回は間違いを報告していませんが、2つの問題があります.
  • セッションがredisの1番データベースに存在することを望んでいますが、0番データベースに
  • が存在します.
  • redisのsessionキーに接頭辞「session」があることを望んでいます.つまり、session:fvcxhj 3 pcekzsx 7 bmx 892 srvek 6 f 9 pq 7です.しかし、実際には、fvcxhj 3 pcekzsx 7 bmx 892 srvek 6 f 9 pq 7--接頭辞は付いていません.

  • そして、私はredisのパスワードを削除してプログラムが安定して動作することを保証したことを忘れないでください.しかし、これは私の初心ではありません.私はredisのパスワードを犠牲にしたくないです.
    解決策
    検証の結果、sessionの格納場所をredisに設定する書き方はもう一つあります.私の実験を経て、上記の3つの問題(パスワードの問題、データベースの問題の指定、接頭辞の問題)を解決することができます.
    この書き方は以下の通りです.
    #  session      redis
    SESSION_ENGINE = 'redis_sessions.session'
    #       
    SESSION_REDIS = {
        #  redis   ip
        'host': 'localhost',
        #  redis  
        'port': 6379,
        #      redis     
        'db': 1,
         #    redis  
        'password': 'mypassword',
         #        
        'prefix': 'session',
         #      
        'socket_timeout': 1
    }

    質問:
    上記の方法で所望の効果が得られたが,問題は解決された.しかし、私はまだ最初の方法がなぜ正しく実行できないのか分かりません.私が使用している様々なツールのバージョンを添付します.
    python 3.7 + django 2.1.7 + redis 3.0.504 + django-redis-sessions 0.6.1
    私と同じ問題に遭遇した仲間は、まず私の解決方法を試してみることができます.问题の根源を知っている友达にも教えてもらいたいので、先にお礼を言いました.
     
     
    もしこのブログがあなたを助けてくれたら、いいねをしてください(#^.^#)
    有疑问也欢迎留言~博主可nice了,在线秒回ヾ(◍°∇°◍)ノ