Python—redis
一、redis
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便,Redis支持主从同步。数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。这使得Redis可执行单层树复制。从盘可以有意无意的对数据进行写操作。由于完全实现了发布/订阅机制,使得从数据库在任何地方同步树时,可订阅一个频道并接收主服务器完整的消息发布记录。
二、python操作redis
1、连接方式
redis-py提供两个类Redis和StrictRedis用于实现Redis的命令,StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,Redis是StrictRedis的子类
#!/usr/bin/env python # -*- coding:utf-8 -*- import redisr = redis.Redis(host='192.168.0.110', port=6379,db=0) r.set('name', 'zhangsan') #添加 print (r.get('name')) #获取
2、连接池
redis-py使用connection pool来管理对一个redis server的所有连接,避免每次建立、释放连接的开销。默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。
#!/usr/bin/env python # -*- coding:utf-8 -*- import redispool = redis.ConnectionPool(host='192.168.0.110', port=6379) r = redis.Redis(connection_pool=pool) r.set('name', 'zhangsan') #添加 print (r.get('name')) #获取
3、操作
redis详细操作命令
4、管道
redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求指定多个命令,并且默认情况下一次pipline 是原子性操作。
#!/usr/bin/env python # -*- coding:utf-8 -*- import redis pool = redis.ConnectionPool(host='192.168.0.110', port=6379) r = redis.Redis(connection_pool=pool)pipe = r.pipeline(transaction=True)r.set('name', 'zhangsan') r.set('name', 'lisi')pipe.execute()
5、发布和订阅
首先定义一个RedisHelper类,连接Redis,定义频道为monitor,定义发布(publish)及订阅(subscribe)方法。
#!/usr/bin/env python #-*- coding:utf-8 -*- import redisclass RedisHelper(object):def __init__(self):self.__conn = redis.Redis(host='192.168.0.110',port=6379)#连接Redisself.channel = 'monitor' #定义名称def publish(self,msg):#定义发布方法self.__conn.publish(self.channel,msg)return Truedef subscribe(self):#定义订阅方法pub = self.__conn.pubsub()pub.subscribe(self.channel) pub.parse_response()return pub
发布者
#!/usr/bin/env python # -*- coding:utf-8 -*- #发布 from RedisHelper import RedisHelperobj = RedisHelper() obj.publish('hello')#发布
订阅者
#!/usr/bin/env python # -*- coding:utf-8 -*- #订阅 from RedisHelper import RedisHelperobj = RedisHelper() redis_sub = obj.subscribe()#调用订阅方法while True:msg= redis_sub.parse_response()print (msg)
转载于:https://www.cnblogs.com/melonjiang/p/5342383.html
Python—redis相关推荐
- 安装redis及python redis模块
第一部分:安装redis mkdir /usr/local/redis cd /usr/local/src wget http://download.redis.io/releases/redis-2 ...
- python redis事务_python redis事务源码及应用分析
在多个客户端同时处理相同的数据时,不谨慎的操作很容易导致数据出错.一般的关系型数据库中有事务保证了数据操作的原子性,同样Redis中也设置了事务,可以理解为"将多个命令打包,然后一次性.按顺 ...
- python redis 人员信息查询_python redis 模块查询数据结果 bytes 类型转码的方法
通过使用 python redis 模块的 client 进行数据获取时,如果没有专门设置,会获取到 b 开头的二进制类型,这是因为 redis 模块客户端交互时默认是 bytes 类型存储,其实初始 ...
- Python Redis pipeline操作(秒杀实现)
Python Redis pipeline操作(秒杀实现) 设想这样的一个场景,你要批量的执行一系列redis命令,例如执行100次get key,这时你要向redis请求100次+获取响应100次. ...
- python安装redis模块_安装redis及python redis模块
第一部分:安装redis mkdir /usr/local/redis cd /usr/local/src wget http://download.redis.io/releases/redis-2 ...
- redis实例python_生产消费者模式与python+redis实例运用(基础篇)
根据这个图,我们举个简单的例子:假如你去某个餐厅吃饭,点了很多菜,厨师要一个一个菜的做,一个厨师不可能同时做出所有你点的菜,于是你有两个选择:第一个,厨师把所有菜都上齐了,你才开始吃:还有一个选择,做 ...
- python anaconda安装redis_Linux下安装python,redis
Linux下安装python,redis linux 安装Python3 1.python下载 请在终端输入如下命令: cd /home wget ```http://cdn.npm.taobao.o ...
- ubuntu 配置python,Redis,Mysql
配置ubuntu的Mysql,python,redis 等环境 博主的ubuntu版本为Ubuntu 16.04.2 使用的是阿里云服务器,也在亚马逊跟腾讯配置过一下均为可用状态 1 配置python ...
- Python redis 使用教程
Python redis 使用教程 1.安装模块 2.连接池 3.redis 基本命令 String 4.redis 基本命令 hash 5.redis基本命令 list 6.redis基本命令 se ...
- python redis 集群_python 连接redis集群 ,常见报错解决。
背景:工作需要,处理的数据需要通过redis进行缓存处理,之后方便统计分析. 目标:python连接redis进行读取&写入. 连接 redis 与 redis集群 是不同的 !!! 一.连接 ...
最新文章
- 二叉搜索树(BFS)总结
- 堆栈向下增长和向上增长的理解
- Android 精品资源(一) 2018年3月23日 星期五
- 阿里P8架构师谈:MySQL有哪些存储引擎,各自的优缺点,应用场景
- 常用NTP网络时间服务器整理
- 【工具相关】Web-Sublime Text2的用法(一)
- android开关控件Switch和ToggleButton
- 下一代防火墙评测--网界
- python turtle 乌龟赛跑_海龟快跑,turtle碰撞检测小游戏
- 计算的威力,智慧的传奇——Fabrice Bellard
- c语言 表盘指针旋转,请教下,表盘指针图片旋转 ??
- 互联网快讯:极米投影仪获用户青睐;粉笔科技创新OMO模式谋突围;华虹半导体拟科创板上市
- STM32电路设计之最小系统
- 探讨魔兽dota改建原理
- 如何创建一个 react 项目及如何运行?
- 如何实现FlowLayout的换行操作
- [高通SDM450][Android 9.0] 虹软人脸算法WIFI信息变化导致授权失败
- 【cec14_func】修改版
- 杭电ACM 1713 相遇周期
- Photoshop7.0 简体中文迷你版
热门文章
- Freeradius+mysql+daloradius简单安装配置
- windows上传文件到linux乱码解决
- ORA-01157、01110问题解决
- LINQ-查询表达式基础
- Theano学习笔记:Theano的艰辛安装体验
- Putty密钥(PrivateKey)导入SecureCRT
- iOS programming Code Snippet Library
- Junit介绍与实现
- 每日英语:Why Food Companies Are Fascinated by the Way We Eat
- ASP.NET MVC SportStore 购物网示例(6)