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人脸识别第三方库face_recognition接口说明文档)
- python的def命令参数(python ddt数据驱动最简实例代码)
- python做学生成绩系统(python学生管理系统)
- python3正则表达式详解(Python正则表达式和re库知识点总结)
- python脚本压缩包解密(详解Python 解压缩文件)
- python 获取ip mac 地址(Python3获取电脑IP、主机名、Mac地址的方法示例)
- python 后台django(Python Django给admin添加Action的方法实例详解)
- python使用门算法加密文件(python实现可逆简单的加密算法)
- python表白代码演示(python3实现表白神器)
- python定时任务(Python使用crontab模块设置和清除定时任务操作详解)
- 用python制作一个简单的小程序(Python简单基础小程序的实例代码)
- python菜单栏中常用的菜单(Python3实现的简单三级菜单功能示例)
- python 装饰器模式(python重试装饰器的简单实现方法)
- python爬虫开源代码(Python实现的文轩网爬虫完整示例)
- python字符串的拼接与分割(Python字符串通过'+'和join函数拼接新字符串的性能测试比较)
- python微信消息模拟请求(python实现微信机器人: 登录微信、消息接收、自动回复功能)
- 翼龙贷组织出借人调研 感受鄱阳 借 来的致富路(翼龙贷组织出借人调研)
- 2023新国风戏曲教育寒假集训班汇报演出《戏娃闹元宵》图文报道(2023新国风戏曲教育寒假集训班汇报演出戏娃闹元宵图文报道)
- 九儿《狐踪谍影》出演热血女特警,戏份杀青受关注(九儿狐踪谍影出演热血女特警)
- 红色代表什么(红色代表什么寓意)
- 蓝天代表什么(蓝天代表什么生肖)
- 今天要吃什么(今天要吃什么菜)
热门推荐
- ubuntu20.2安装mysql(Ubuntu 14.04下mysql安装配置教程)
- linuxgzip命令(Linux bzip2 命令的使用)
- docker配置源不生效(解决docker CMD/ENTRYPOINT执行sh脚本报: not found/run.sh:)
- tornado异步编程(Tornado Web服务器中处理空白字符的解决方案)
- laravel5.7项目实战(基于Laravel 5.2 regex验证的正确写法)
- 服务异常处理方案(网站出现Service Unavailable提示怎么解决?)
- ASP.NET List 集合操作
- nginx配置root后的路径打不开(详解nginx.conf 中 root 目录设置问题)
- mysql编码设置
- ASP.NET中Partial Class部分类
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9