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 ...
随机推荐
- sql if else 用法
语法: case when 条件1 then 结果1 when 条件2 then 结果2 else 结果N end 可以有任意多个条件,如果没有默认的结果,最后的else也可以不写, select c ...
- MySQL like查询使用索引
在使用msyql进行模糊查询的时候,很自然的会用到like语句,通常情况下,在数据量小的时候,不容易看出查询的效率,但在数据量达到百万级,千万级的时候,查询的效率就很容易显现出来.这个时候查询的效率就 ...
- 使用Docker快速搭建Nginx+PHP-FPM+MySQL+phpMyAdmin环境
一.概述 环境介绍 操作系统:centos 7.6 docker版本:19.03.8 ip地址:192.168.31.34 本文将介绍如何使用单机部署Nginx+PHP-FPM环境 二.Nginx+P ...
- Mybatis系列全解(二):Mybatis简介与环境搭建
封面:洛小汐 作者:潘潘 Mybatis 是一套持久层框架,灵活易用,特别流行. 前言 Mybatis系列全解,我们预计准备10+篇文章,让我们了解到 Mybatis 的基本全貌,真正从入门到上手,从 ...
- Codeforces Round #683 (Div. 2, by Meet IT)
A 初始情况\(1\) ~ \(n\)堆分别有 \(1\) ~ \(n\) 个糖果,第\(i\)次操作给除了所选堆的糖果数 \(+ i\), 找到一种方案可以使得所有堆糖果数相同,输出操作次数和每次选 ...
- go中sync.Cond源码解读
sync.Cond 前言 什么是sync.Cond 看下源码 Wait Signal Broadcast 总结 sync.Cond 前言 本次的代码是基于go version go1.13.15 da ...
- CF1149C Tree Generator™
一.题目 点此看题 二.解法 话说老师给的课件是错的啊,把我坑了好久,我手玩样例才玩出来,最后只能去看洛谷题解了. 本题是树是用一个括号序列给出的,你要知道的是:( 代表递归下去到一个新节点,) 表示 ...
- vue全家桶和react全家桶
vue全家桶:vue + vuex (状态管理) + vue-router (路由) + vue-resource +axios +elementui react全家桶 : react + re ...
- 精通模块化JavaScript
近日读了一本名为<精通模块化JavaScript>的书,并记录了其中的精髓. 一.模块化思维 精通模块化开发并不是指要遵循一套定义明确的规则,而是指能够将自己置身于使用者的角度,为可能即将 ...
- OpenGL光照计算中法线矩阵原理及推到过程
问题起源 在计算漫反射关照时,需要用到法线,通过法线和光线的点乘值,计算漫反射的产生的光线强度,所以需要从顶点着色器中将法线数据传递到片源着色器中,但是片源着色器中的顶点坐标是经过了模型矩阵变化过的世 ...