實現將登陸資訊儲存在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 版權宣告:本文為博主原創文章,轉載請附上博文連結!