Redis 与 Python 交互
1. Python 库安装
2. 交互代码范例
3. Redis 操作封装
4. 应用范例:用户登录
1. Python 库安装
联网安装
pip install redis
使用源码安装
到中文官网查找客户端代码
unzip redis-py-master.zip
cd redis-py-master
python setup.py install
2. 交互代码范例
1 import redis
2
3
4 # 1.连接 Redis 服务器
5 try:
6 r=redis.StrictRedis(host='localhost', port=6379)
7 except Exception as e:
8 print(e.message)
9
10 # 2.读写数据
11 # 方式一:根据数据类型的不同,调用相应的方法,完成读写
12 r.set('name','hello') # 设置 string 数据
13 r.get('name') # 读取 string 数据
14
15 # 方式二:使用 pipline
16 # 缓冲多条命令,然后一次性执行,减少数据传输频率,从而提高效率
17 pipe = r.pipeline()
18 pipe.set('name', 'world')
19 pipe.get('name')
20 pipe.execute()
3. Redis 操作封装
- 连接 Redis 服务器部分是一致的。
- 将 String 类型的读写进行封装。
1 import redis
2
3
4 # Redis 工具类
5 class RedisTool():
6
7 # 初始化连接 Redis
8 def __init__(self, host='localhost', port=6379):
9 self.__redis = redis.StrictRedis(host, port)
10
11 # 读取 String 值
12 def get(self, key):
13 if self.__redis.exists(key): # 如果键存在
14 return self.__redis.get(key)
15 else: # 否则返回空值
16 return ""
17
18 # 设置 String 键值
19 def set(self, key, value):
20 self.__redis.set(key, value)
4. 应用范例:用户登录
业务过程如下:
- 输入用户名、密码
- 密码加密
- 判断 Redis 中是否记录了用户名,如果有则成功
- 如果 Redis 中没有用户名,则到 Mysql 中查询
- 从 Mysql 中查询成功后,将用户名记录到 Redis 中
1 from t2 import RedisTool
2 from t3 import MysqlTool
3 import hashlib
4
5
6 name=input("请输入用户名:")
7 pwd=input("请输入密码:")
8
9 # 密码加密
10 sha1=hashlib.sha1()
11 sha1.update(pwd)
12 pwd1=sha1.hexdigest()
13
14 # 判断 Redis 中是否存在该用户信息的缓存数据
15 try:
16 redis=RedisTool()
17 if redis.get('uname') == name:
18 print('ok')
19 # 不存缓存,则走数据库进行用户信息校验
20 else:
21 mysql = MysqlTool('localhost', 3306, 'test1', 'root', 'mysql')
22 upwd = mysql.get_one('select upwd from userinfos where uname=%s', [name])
23 if upwd == None:
24 print('用户名错误')
25 elif upwd[0] == pwd1:
26 redis.set('uname', name) # 用户信息校验通过,则写入缓存
27 print('登录成功')
28 else:
29 print("密码错误")
30 except Exception as e:
31 print(e.message)
Redis 与 Python 交互的更多相关文章
- redis与python交互
import redis #连接 r=redis.StrictRedis(host="localhost",port=6379,password="sunck" ...
- 工大助手(C#与python交互)
工大助手(爬虫--C#与python交互) 基本内容 工大助手(桌面版) 实现登陆.查成绩.计算加权平均分等功能 团队人员 13070046 孙宇辰 13070003 张帆 13070004 崔巍 1 ...
- 深入浅出 Redis client/server交互流程
综述 最近笔者阅读并研究redis源码,在redis客户端与服务器端交互这个内容点上,需要参考网上一些文章,但是遗憾的是发现大部分文章都断断续续的非系统性的,不能给读者此交互流程的整体把握.所以这里我 ...
- Redis的Python实践,以及四中常用应用场景详解——学习董伟明老师的《Python Web开发实践》
首先,简单介绍:Redis是一个基于内存的键值对存储系统,常用作数据库.缓存和消息代理. 支持:字符串,字典,列表,集合,有序集合,位图(bitmaps),地理位置,HyperLogLog等多种数据结 ...
- Redis的Python客户端redis-py的初步使用
1. Redis的安装 sudo pip install redis sudo pip install hiredis Parser可以控制如何解析redis响应的内容.redis-py包含两个Par ...
- Python教程(1.2)——Python交互模式
上一节已经说过,安装完Python,在命令行输入"python"之后,如果成功,会得到类似于下面的窗口: 可以看到,结尾有3个>符号(>>>).>&g ...
- 区分命令行模式和Python交互模式
命令行模式 在Windows开始菜单选择"命令提示符",就进入到命令行模式,它的提示符类似C:\> Python交互模式 在命令行模式下敲命令python,就看到类似如下的一 ...
- 命令行以及Python交互模式下python程序的编写
一.命令行模式 在Windows开始菜单选择“命令提示符”,就进入到命令行模式,它的提示符类似C:\>: 二.Python交互模式 在命令行模式下敲命令python,就看到类似如下的一堆文本输出 ...
- LinuxMint上安装redis和python遇到的一些问题
今天在安装Redis和Python上遇到了些问题,解决后记录下来. 环境:LinuxMint 18.3 安装redis sudo wget http://download.redis.io/relea ...
随机推荐
- 微信小程序:block标签
代码中存在block标签,但是渲染的时候会移除掉. 例子: 如果将view改为block: 当你要渲染某些数据时,如果不想额外的加一层外边的标签,此时可以使用block标签来进行占位.
- SpringBoot2.2.5整合ElasticSearch7.9.2
1:前言 为什么是SpringBoot2.2.5,不是其他的SpringBoot版本,原因有两个: 1:SpringBoot2.2.0以上才能支持ElasticSearch7.x版本. 2:Sprin ...
- Guava-RateLimiter实现令牌桶控制接口限流方案
一.前言 对于一个应用系统来说,我们有时会遇到极限并发的情况,即有一个TPS/QPS阀值,如果超了阀值可能会导致服务器崩溃宕机,因此我们最好进行过载保护,防止大量请求涌入击垮系统.对服务接口进行限流可 ...
- 小白养成记——MySQL中的排名函数
1.ROW_NUMBER() 函数 依次排序,没有并列名次.如 SELECT st.ID '学号', st.`NAME` '姓名', sc.SCORE '成绩', ROW_NUMBER() OVER( ...
- 关于安装VMware以及Linux操作系统过程
想用Linux完成部分教学作业,虚拟机是少不了的,所以首先选择了VMware进行安装. VMware在官网下载之后,就可以直接打开安装,但是在安装过程中,建议不要勾选启动时检查产品更新和加入VMwar ...
- [Java Tutorial学习分享]接口与继承
目录 接口 概述 Java 中的接口 使用接口作为API 定义一个接口 The Interface Body 实现接口 使用接口作为类型 进化的接口 默认方法 扩展包含默认方法的接口 静态方法 接口总 ...
- Java-Socket通信 知识点记录
目录 一.Socket基本案例 二.消息通信 2.1 双向通信 2.2 告知发送结束 2.2.1 通过Socket关闭 2.2.2 通过Socket关闭输出流的方式 2.2.3 通过约定符号 2.2. ...
- 基于Linux的tty架构及UART驱动详解
更多嵌入式Linux原创,请关注公众号:一口Linux 一.模块硬件学习 1.1. Uart介绍 通用异步收发传输器(Universal Asynchronous Receiver/Transmitt ...
- Codeforces Round #533 C. Ayoub and Lost Array
题面: 传送门 题目描述: 题意很简单:1.数组中的所有整数都在区间[l, r],2.所有元素之和能被3整除.现在知道这个数组的大小,l和r,问:按照题目的要求组成的数组一共有多少种可能. 题目分 ...
- 【python+selenium的web自动化】- 针对上传操作的实现方案
如果想从头学起selenium,可以去看看这个系列的文章哦! https://www.cnblogs.com/miki-peng/category/1942527.html 关于上传操作 上传有两 ...