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 GUI实现小球满屏乱跑效果)
- python变量指向讲解(详解python中init方法和随机数方法)
- python机器人开发(python程序控制NAO机器人行走)
- python中导入模块的命令(Python3 导入上级目录中的模块实例)
- python转pdf教程(Python实现将HTML转成PDF的方法分析)
- python零基础入门五小时(从0开始的Python学习016异常)
- python中if语句应学会什么(Python基础之条件控制操作示例if语句)
- 怎么python爬取网页图片(详解Python静态网页爬取获取高清壁纸)
- python定时任务详解(使用Python做定时任务及时了解互联网动态)
- python图形绘制教程(python绘制漏斗图步骤详解)
- python 正则表达式语法大全(python re库的正则表达式入门学习教程)
- python多线程并发使用场景(对python多线程SSH登录并发脚本详解)
- python为什么要用多进程(对Python的多进程锁的使用方法详解)
- pythonpandas数据类型(Python3.5 Pandas模块之Series用法实例分析)
- python利用空列表进行数字排序(python实现计数排序与桶排序实例代码)
- python获取字符串类型(python3利用ctypes传入一个字符串类型的列表方法)
- 《道德经》:功成不局,泰而不骄(道德经:功成不局)
- 每日一典 过江之鲫(每日一典过江之鲫)
- 红色代表什么(红色代表什么意义和象征)
- 菲律宾安全吗(菲律宾安全吗2023)
- 彩礼重要吗()
- 写信告诉我今天海是什么颜色(写信告诉我今天海是什么颜色回答)
热门推荐
- python学生管理系统的思路(python实现学员管理系统)
- 如何实现让dede三级栏目数据调用(dede调取三级栏目名及栏目下的内容列表的方法)
- vuecli配置环境变量(Vue CLI中模式与环境变量的深入详解)
- mysql 查询语法常见问题(MySQL 异常有这一篇就够了!)
- vue三种判断条件(Vue中插槽和过滤器的深入讲解)
- dedecms调用点击数(织梦DEDECMS中显示复制地址,推荐给QQ/MSN上的好友的代码)
- sql server2008脚本执行(在Sql Server中调用外部EXE执行程序引发的问题)
- ExtJs中Store的种类
- php导出excel使用方法(PHP使用ajax的post方式下载excel文件简单示例)
- sql server提供的聚合函数(SQLServer行列互转实现思路聚合函数)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9