1. 程式人生 > >實現將登陸資訊儲存在redis資料庫中

實現將登陸資訊儲存在redis資料庫中

將登入資訊存放在redis資料庫中,可以極大的提高下次訪問的效率。

首先,其核心思想如下:

 核心思想,首先在登陸之前在redis資料庫中對資料進行查詢,看是否存在該條資料,如果不存在的話,就去資料庫查詢,然後在查詢到之後,在正常登入的時候將資料儲存到redis中,當然這個儲存資訊的鍵值對也就是在redis查詢的那個資料,然後下次如果再次執行訪問的時候,在redis中就有了此資料,進而提高了訪問的效率。細節:儲存使用者的登入資訊,儲存在redis中的時候使用的是hash資料結構,【hash資料結構其實就是,對應的鍵值對的值是一個字典型別。】此時就可以將使用者攜帶的唯一標識作為值的鍵,將使用者的其他某個資訊作為該鍵的值儲存起來。

其程式碼如下:

import redis from sqlhelper import MySqlHelper

name = input('username:') pwd = input('password:')

helper = MySqlHelper() r = redis.Redis(host='10.8.0.0')#這裡的主機是你自己的主機ip # r.hset('logininfo', '123', name)#‘logininfo’ 是雜湊結構的鍵,‘123’是‘logininfo’鍵的值的鍵,name就是‘123’的值了

#當然這裡邊的鍵都是自定義的,‘123’可以換為使用者的唯一標識,如token或者sessionid等等,name 就可放使用者的資訊, # 先從redis中取登陸資料 n = r.hget('logininfo', '123') print(n) if n:     if n.decode('utf-8') == name:         print('redis 正常登陸')     else:         print('使用者不合法') else:     # 進行登陸使用者合法性的判斷     helper.connect()     info = helper.query_one('select * from user where username=%s and password=%s', (name, pwd))     if info:         # 合法使用者         r.hset('logininfo', '123', name)         print('mysql 正常登陸')     else:         print('使用者名稱或者密碼不對')     helper.close()

下邊是對應的連結資料庫的模組:

import pymysql class MySqlHelper:

    def __init__(self):         self.conn = None         self.curosr = None

    def connect(self):         '''獲取連線物件'''         self.conn = pymysql.connect(                 host='127.0.0.1',                 port=3306,                 user='root',                 passwd='root',                 db='p1803',                 charset='utf8'             )         self.curosr = self.conn.cursor(cursor=pymysql.cursors.DictCursor)         

    def close(self):         '''關閉連線'''         self.conn.close()         self.curosr.close()

    def update(self, sql, param=None):         '''增刪改操作'''         try:             self.curosr.execute(sql, param)             self.conn.commit()         except Exception as e:             print(e)             self.conn.rollback()

完成如上操作就實現了將某些資料儲存到redis中去了 ---------------------  作者:我是大古隊長  來源:CSDN  原文:https://blog.csdn.net/qq_42470033/article/details/81530241  版權宣告:本文為博主原創文章,轉載請附上博文連結!