日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

数据库实例:mysql与redis结合用户登录

發布時間:2024/7/5 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库实例:mysql与redis结合用户登录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

加入redis后登錄邏輯如下圖,將圖中nosql的位置換為redis即可


?

  • 用戶數據存的鍵為用戶名,值為密碼
  • 將原來MySQL操作的代碼封裝到一個方法中,代碼如下

?

defmysql_login():
??? #redis
中沒有則到mysql中查詢
??? sql=
'select upwd from py_users whereuname=%s'
??? params=[uname]
???
try:
??????? conn= connect(host=
'localhost',port=3306,database='python',user='root',password='mysql',charset='utf8')
??????? cur=conn.cursor()
???????cur.execute(sql,params)
??????? result=cur.fetchone()
??????? cur.close()
???????
if result==None:
???????????
print '用戶名錯誤,登錄失敗,數據來源于mysql'
???????
else:
???????????
#當查詢到用戶及對應的密碼時,將數據加入到redis中,以供后續登錄使用
???????????r.set(uname,upwd_sha1)
???????????
#判斷密碼是否正確
???????????
if result[0]==upwd_sha1:
???????????????
print '登錄成功,數據來源于mysql'
???????????
else:
???????????????
print '密碼錯誤,登錄失敗,數據來源于mysql'
???
except Exception,e:
???????
print '登錄失敗,錯誤原因:%s' % e
???
finally:
??????? conn.close()

  • 創建user_redis.py文件,代碼如下

#coding=utf-8
from MySQLdb import*
from hashlib importsha1
from redis import*

if __name__=='__main__':
???
try:
???????
#接收輸入用戶名、密碼
??????? uname=raw_input(
'請輸入用戶名:')
??????? upwd=raw_input(
'請輸入密碼:')

#對密碼加密
??????? s1=sha1()
??????? s1.update(upwd)
??????? upwd_sha1=s1.hexdigest()

#根據用戶名查詢密碼
??????? #
先到redis上查,沒有再到mysql上查
??????? r=StrictRedis()
??????? result=r.get(uname)
???????
if result==None:
??????????
?mysql_login()
???????
else:
???????????
#redis中找到了這個用戶名的數據
???????????
if result==upwd_sha1:
???????????????
print '登錄成功,數據來源于redis'
???????????
else:
???????????????
print '密碼錯誤,登錄失敗,數據來源于redis'
???
exceptException,e:
???????
print '登錄失敗,錯誤原因:%s'%e

總結

以上是生活随笔為你收集整理的数据库实例:mysql与redis结合用户登录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。