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. 应用范例:用户登录

业务过程如下:

  1. 输入用户名、密码
  2. 密码加密
  3. 判断 Redis 中是否记录了用户名,如果有则成功
  4. 如果 Redis 中没有用户名,则到 Mysql 中查询
  5. 从 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 交互的更多相关文章

  1. redis与python交互

    import redis #连接 r=redis.StrictRedis(host="localhost",port=6379,password="sunck" ...

  2. 工大助手(C#与python交互)

    工大助手(爬虫--C#与python交互) 基本内容 工大助手(桌面版) 实现登陆.查成绩.计算加权平均分等功能 团队人员 13070046 孙宇辰 13070003 张帆 13070004 崔巍 1 ...

  3. 深入浅出 Redis client/server交互流程

    综述 最近笔者阅读并研究redis源码,在redis客户端与服务器端交互这个内容点上,需要参考网上一些文章,但是遗憾的是发现大部分文章都断断续续的非系统性的,不能给读者此交互流程的整体把握.所以这里我 ...

  4. Redis的Python实践,以及四中常用应用场景详解——学习董伟明老师的《Python Web开发实践》

    首先,简单介绍:Redis是一个基于内存的键值对存储系统,常用作数据库.缓存和消息代理. 支持:字符串,字典,列表,集合,有序集合,位图(bitmaps),地理位置,HyperLogLog等多种数据结 ...

  5. Redis的Python客户端redis-py的初步使用

    1. Redis的安装 sudo pip install redis sudo pip install hiredis Parser可以控制如何解析redis响应的内容.redis-py包含两个Par ...

  6. Python教程(1.2)——Python交互模式

    上一节已经说过,安装完Python,在命令行输入"python"之后,如果成功,会得到类似于下面的窗口: 可以看到,结尾有3个>符号(>>>).>&g ...

  7. 区分命令行模式和Python交互模式

    命令行模式 在Windows开始菜单选择"命令提示符",就进入到命令行模式,它的提示符类似C:\> Python交互模式 在命令行模式下敲命令python,就看到类似如下的一 ...

  8. 命令行以及Python交互模式下python程序的编写

    一.命令行模式 在Windows开始菜单选择“命令提示符”,就进入到命令行模式,它的提示符类似C:\>: 二.Python交互模式 在命令行模式下敲命令python,就看到类似如下的一堆文本输出 ...

  9. LinuxMint上安装redis和python遇到的一些问题

    今天在安装Redis和Python上遇到了些问题,解决后记录下来. 环境:LinuxMint 18.3 安装redis sudo wget http://download.redis.io/relea ...

随机推荐

  1. 前端与后端之间参数的传递与接收和@RequestBody,@Requestparam,@Param三个注解的使用

    参数在前台通过对象的形式传递到后台,在后台,可以用@RequestBody注解通过Map或JSONObject接收(太麻烦,既要从Map中取值,取完值后又要封装到Map),也可以用@RequestPa ...

  2. MYSQL安全模式"sql_safe_updates"设置update和delete不带where的操作限制

    前言 在数据库操作中,如果在update和delete没有加上where条件,数据将会全部修改. 不只是初识mysql的开发者会遇到这个问题,工作有一定经验的开发者有时难免也会忘记写入where条件. ...

  3. bootstrap日期范围选择插件daterangepicker详细使用方法

    插件官方网站地址 bootstrap-daterangepicker是个很方便的插件,但是对我这种菜鸟来说,文档不够详细,摆弄了好久才整好.记录下来供以后参考,也希望能帮到有需要的朋友. 目前版本是2 ...

  4. ReactElement源码笔记

    ReactElement 源码笔记 ReactElement通过 createElement创建,调用该方法需要 传入三个参数: type config children type指代这个ReactE ...

  5. SHELL编程概念&变量剖析

    一.shell软件概念和应用场景 1) 学习Linux技术,不是为了学习系统安装.命令操作.用户权限.配置IP.网络管理,学习Linux技术重点:基于Linux系统部署和维护各种应用软件.程序(Apa ...

  6. 选择 FreeBSD 而不是 Linux 的技术性原因3

    选择 FreeBSD 而不是 Linux 的技术性原因3 jail FreeBSD Jails 系统是另一个惊人的工程壮举. 在 2000 年 3 月 14 日的 4.0 版本中,FreeBSD 引入 ...

  7. js 获取树结构的节点深度

    需求:获取树结构的节点深度. 实现util.js: // 获取节点深度 参数为树结构array function getMaxFloor(treeData){ let deep = 0; functi ...

  8. Linux给防火墙开外网端口

    /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT 80:外网端口

  9. 攻防世界 reverse 进阶 APK-逆向2

    APK-逆向2 Hack-you-2014 (看名以为是安卓逆向呢0.0,搞错了吧) 程序是.net写的,直接祭出神器dnSpy 1 using System; 2 using System.Diag ...

  10. 2、MyBatis教程之第一个MyBatis程序

    3.MyBatis第一个程序 1.搭建实验数据库 CREATE DATABASE `mybatis`; USE `mybatis`; DROP TABLE IF EXISTS `user`; CREA ...