实现将登陆信息存储在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 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值