pythonredis列表(Python redis操作实例分析连接、管道、发布和订阅等)
pythonredis列表
Python redis操作实例分析连接、管道、发布和订阅等本文实例讲述了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 redis r = 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 redis pool = 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 redis class redishelper( object ): def __init__( self ): self .__conn = redis.redis(host = '192.168.0.110' ,port = 6379 ) #连接redis self .channel = 'monitor' #定义名称 def publish( self ,msg): #定义发布方法 self .__conn.publish( self .channel,msg) return true def 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 redishelper obj = redishelper() obj.publish( 'hello' ) #发布 |
订阅者
|
#!/usr/bin/env python # -*- coding:utf-8 -*- #订阅 from redishelper import redishelper obj = redishelper() redis_sub = obj.subscribe() #调用订阅方法 while true: msg = redis_sub.parse_response() print (msg) |
希望本文所述对大家python程序设计有所帮助。
原文链接:http://www.cnblogs.com/melonjiang/p/5342383.html
- python基本数据结构(浅谈Python编程中3个常用的数据结构和算法)
- python分支的描述(学习python分支结构)
- pythonimage库(Python/Django后端使用PIL Image生成头像缩略图)
- python 写入d盘文件(python文件写入write的操作)
- python 取出时间段日志(python 实现提取某个索引中某个时间段的数据方法)
- python渗透攻击(Python实现DDos攻击实例详解)
- python教程列表排序(Python一行代码实现快速排序的方法)
- pythonmatplotlib画图流程(python3使用matplotlib绘制条形图)
- python分析excel基础数据生成报表(Python实现定制自动化业务流量报表周报功能XlsxWriter模块)
- python pdf文件操作(Python常见读写文件操作实例总结文本、json、csv、pdf等)
- python 微信二维码接口(python实现微信防撤回神器)
- python真的能高效处理excel报表吗(Python数据报表之Excel操作模块用法分析)
- python3字符串怎么操作(Python3字符串encode与decode的讲解)
- python怎么自动刷抖音(python实现抖音点赞功能)
- python批量转换图片格式(利用Python对文件夹下图片数据进行批量改名的代码实例)
- python实现在同一电脑上tcp通信(Python两台电脑实现TCP通信的方法示例)
- 做网红真的很能赚钱吗(做网红真的很能赚钱吗)
- 10句英语常用(英语常用900句)
- 爱情能当饭吃吗(爱情能当饭吃吗说说)
- 白T恤穿法(白t恤)
- 你怎么忘了是说先爱我(你怎么忘了如何爱我)
- 做技术难吗(技术难不难)
热门推荐
- wamp系统设置教程(浅谈本地WAMP环境的搭建)
- elasticsearch docker(在Docker中安装Elasticsearch7.6.2的教程)
- pythontkinter项目界面(python Tkinter版学生管理系统)
- vue 网页打印(vue打印功能实现的两种方法总结)
- php怎么修改单独一行数据(PHP实现批量修改文件名的方法示例)
- docker 技术认证(docker获取Let's Encrypt永久免费SSL证书的方法)
- thinkphp源码上传(ThinkPHP框架实现FTP图片上传功能示例)
- uniapp使用vue写页面(分析uniapp入门之nvue爬坑记)
- pythonpandas数据类型(详解Python数据分析--Pandas知识点)
- css简单网页布局代码(纯CSS制作自适应分页条附源码下载)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9