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 ...
随机推荐
- 关于string【】 数组 进行 toString() 之后无法将数组的内容连接起来组合成 string 字符串 的问题
string[] to string 如果直接对一个string[] 数组进行 tostring()的操作,得到的值都是 system.string[] 如果想要将 string[] 数组内容转换为一 ...
- DOM的理解
https://www.cnblogs.com/djtang/p/11538420.html dom的理解 https://blog.csdn.net/jiuqiyuliang/article/de ...
- 后端程序员之路 36、Apache Kafka
Apache Kafkahttp://kafka.apache.org/ Kafka,很容易就联想到<海边的卡夫卡>,文艺程度和Casablanca有得一拼.Kafka是一个分布式消息系统 ...
- double型数据的输入和输出--%f和%lf
scanf函数是通过指针指向变量的. %f告诉scanf函数在所传地址位置上存储一个float型值, 而%lf告诉scanf函数在所传地址位置上存储一个double型值. 这里float和double ...
- LeetCode-宝石与石头
宝石与石头 LeetCode-771 使用哈希表. 这里使用内置算法库中的map /** * 给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头. * S 中每个字符代表了一种你拥有的 ...
- Windows-Redis占用C盘系统空间
发现redis在电脑死机蓝屏的情况下,就是非正常退出redis会导致redis的缓存文件不会回收,占用系统空间, 下次在启动的时候,会再次创建一个10G多的缓存文件,极度占用磁盘空间. 现说明解决办法 ...
- jdk 集合大家族之Map
jdk 集合大家族之Map 前言: 之前章节复习了Collection接口相关,此次我们来一起回顾一下Map相关 .本文基于jdk1.8. 1. HashMap 1.1 概述 HashMap相对于Li ...
- 来,Consul 服务发现入个门(一看就会的那种)
前言 在微服务架构中,对于一个系统,会划分出多个微服务,而且都是独立开发.独立部署,最后聚合在一起形成一个系统提供服务.当服务数量增多时,这些小服务怎么管理?调用方又怎么能确定服务的IP和端口?服务挂 ...
- 【odoo14】第四章、应用模型
由于本章有包含很多基础知识,个人不会全部转化为自己的语言.直接机器翻译了(用斜体标注,机器翻译反而一字不落,我会过滤掉冗余的内容),虽然机翻,但会保证意思不会偏. 本章主要章节如下: 定义模型展示及顺 ...
- Hive数据导出的几种方式
在hive的日常使用中,经常需要将hive表中的数据导出来,虽然hive提供了多种导出方式,但是面对不同的数据量.不同的需求,如果随意就使用某种导出方式,可能会导致导出时间过长,导出的结果不满足需求, ...