热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

加入redis后登录逻辑如下图,将图中nosql的位置换为redis即可用户数据存的键为用户名,值为密码将原来MySQL操作的代码封装到一个方法中&#x

加入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


推荐阅读
  • 作为软件工程专业的学生,我深知课堂上教师讲解速度之快,很多时候需要课后自行消化和巩固。因此,撰写这篇Java Web开发入门教程,旨在帮助初学者更好地理解和掌握基础知识。通过详细记录学习过程,希望能为更多像我一样在基础方面还有待提升的学员提供有益的参考。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • Docker 环境下 MySQL 双主同步配置指南
    本文介绍了如何在 Docker 环境中配置 MySQL 的双主同步,包括目录结构的创建、配置文件的编写、容器的创建与设置以及最终的验证步骤。 ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • 基于iSCSI的SQL Server 2012群集测试(一)SQL群集安装
    一、测试需求介绍与准备公司计划服务器迁移过程计划同时上线SQLServer2012,引入SQLServer2012群集提高高可用性,需要对SQLServ ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文详细介绍了如何使用Python中的smtplib库来发送带有附件的邮件,并提供了完整的代码示例。作者:多测师_王sir,时间:2020年5月20日 17:24,微信:15367499889,公司:上海多测师信息有限公司。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 触发器的稳态数量分析及其应用价值
    本文对数据库中的SQL触发器进行了稳态数量的详细分析,探讨了其在实际应用中的重要价值。通过研究触发器在不同场景下的表现,揭示了其在数据完整性和业务逻辑自动化方面的关键作用。此外,还介绍了如何在Ubuntu 22.04环境下配置和使用触发器,以及在Tomcat和SQLite等平台上的具体实现方法。 ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 前两天有位朋友邀请我回答个问题,为什么MongoDB(索引)使用B-树而Mysql使用B+树?我觉得这个问题非常好,从实际应用的角度来学习数据结构,没有比这更好的方法了。因为 ... [详细]
  • Spring Boot 永远滴神!10分钟快速入门
    为什么是SpringBoot因为目前开发WEB应用,SpringBoot是启动Spring项目最快最流行的方式了。无论我们要构建一个什么样的应用,它都可 ... [详细]
author-avatar
baby欧米茄
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有