python操作redis缓存-管道、发布订阅

一、管道

redis-py默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求指定多个命令,并且默认情况下一次pipline 是原子性操作。

pipeline(transaction=True)transaction=True将多个操作组合成原子性操作,也就是一个整体,有一个操作失败,意味着全部失败,数据回滚

pipe.execute()执行原子性操作

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis #导入操作redis模块 pool = redis.ConnectionPool(host='127.0.0.1', port=6379) #配置连接池连接信息 r = redis.Redis(connection_pool=pool) #连接连接池 pipe = r.pipeline(transaction=True) #将多个操作组合成原子性操作,也就是一个整体,有一个操作失败,意味着全部失败,数据回滚 pipe.set('name', 'alex')
pipe.set('role', 'sb') pipe.execute() #执行原子性操作

二、发布订阅

也就是,多个订阅端循环监听着Redis里的一个name名称通道,当这个通道里有内容时立即获取到,发布端向这个name名称通道里写入类容提供订阅者获取

订阅端
pubsub()创建订阅对象
subscribe('fm104')创建订阅通道,也就是redis里的一个name名称
parse_response()循环监听通道里的类容
发布端
publish('fm104','12')发布内容

订阅端

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
订阅者
"""
import redis #导入缓存模块 r = redis.Redis(host='127.0.0.1', port=6379) #配置连接池连接信息
pub = r.pubsub() #创建订阅对象
pub.subscribe('fm104') #创建订阅通道,也就是redis里的一个name名称
while True:
msg = pub.parse_response() #循环监听通道里的类容
print(msg) #通道里有内容就打印

发布端

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
发布者
"""
import redis #导入缓存模块 r = redis.Redis(host='127.0.0.1', port=6379) #配置连接池连接信息
r.publish('fm104','')

以后可以封装成一个模块,如:

#!/usr/bin/env python
# -*- coding:utf-8 -*- import redis class RedisHelper: def __init__(self):
self.__conn = redis.Redis(host='10.211.55.4')
self.chan_sub = 'fm104.5'
self.chan_pub = 'fm104.5' def public(self, msg):        #发布方法
self.__conn.publish(self.chan_pub, msg)
return True def subscribe(self):         #订阅方法
pub = self.__conn.pubsub()
pub.subscribe(self.chan_sub)
pub.parse_response()
return pub

第三百零一节,python操作redis缓存-管道、发布订阅的更多相关文章

  1. 第二百九十八节,python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表

    python操作redis缓存-Set集合类型,可以理解为不能有重复元素的列表 sadd(name,values)name对应的集合中添加元素 #!/usr/bin/env python # -*- ...

  2. 第三百零九节,Django框架,models.py模块,数据库操作——F和Q()运算符:|或者、&并且——queryset对象序列化

    第三百零九节,Django框架,models.py模块,数据库操作——F()和Q()运算符:|或者.&并且 F()可以将数据库里的数字类型的数据,转换为可以数字类型 首先要导入 from dj ...

  3. 第二百九十六节,python操作redis缓存-Hash哈希类型,可以理解为字典类型

    第二百九十六节,python操作redis缓存-Hash哈希类型,可以理解为字典类型 Hash操作,redis中Hash在内存中的存储格式如下图: hset(name, key, value)name ...

  4. 第二百九十五节,python操作redis缓存-字符串类型

    python操作redis缓存-字符串类型 首先要安装redis-py模块 python连接redis方式,有两种连接方式,一种是直接连接,一张是通过连接池连接 注意:以后我们都用的连接池方式连接,直 ...

  5. 第二百九十九节,python操作redis缓存-SortSet有序集合类型,可以理解为有序列表

    python操作redis缓存-SortSet有序集合类型,可以理解为有序列表 有序集合,在集合的基础上,为每元素排序:元素的排序需要根据另外一个值来进行比较,所以,对于有序集合,每一个元素有两个值, ...

  6. 第二百九十七节,python操作redis缓存-List类型,可以理解为列表

    python操作redis缓存-List类型,可以理解为列表,是可以有重复元素的列表 List操作,redis中的List在在内存中按照一个name对应一个List来存储.如图: lpush(name ...

  7. 第三百节,python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型

    python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型 delete(*names)根据删除redis中的任意数据类型 #!/usr/bin/env pyt ...

  8. python操作Redis缓存

    python操作Redis缓存 https://www.cnblogs.com/guotianbao/p/8683037.html 学习资料:电子书资源 联系邮箱:gmu1592618@gmail.c ...

  9. 第三百零六节,Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置

    Django框架,models.py模块,数据库操作——创建表.数据类型.索引.admin后台,补充Django目录说明以及全局配置文件配置 数据库配置 django默认支持sqlite,mysql, ...

随机推荐

  1. C# winform 请求http ( get , post 两种方式 )

    一:.Net中有两个类 HttpWebRequest 和HttpWebResponse 类来实现Http的请求 实现步骤: 1.通过WebRequest类创建一个HttpWebRequest的对象,该 ...

  2. Win7没有telnet怎么办

    http://jingyan.baidu.com/article/8065f87fc3b31123312498e5.html

  3. [转] 基本RS触发器

    在触发器中,最简单的触发器是基本RS触发器,它由两个与-非门(或者两个或-非门)来组成. 图5.2.1(a)是由与-非门构成的基本RS触发器,由图看出,基本RS触发器有两个输入端(和)和两个输出端(和 ...

  4. C#的MD5哈希值计算

    MD5哈希值计算:(仅仅是记录一下) /// <summary> /// 获取字符串的MD5值 /// </summary> /// <param name=" ...

  5. 使用Frame控件设计Silverlight的导航

    这里所说的导航其实就是在Silverlight的页面之间前进后退以及跳转.通过Frame控件配合后台NavigationService类可以很容易的做到页面之间的导航. 这就是工具箱中的Frame控件 ...

  6. python 连接sql server数据库的示例代码

    首先,到http://pymssql.sourceforge.net/下载pymssql模块,必须安装这个模块才可以用python连接mysql 以下是sql server的操作代码,需要注意字符集 ...

  7. linux命令(32):cat

    1.cat 显示文件连接文件内容的工具: cat 是一个文本文件查看和连接工具.查看一个文件的内容,用cat比较简单,就是cat 后面直接接文件名. 比如: [root@localhost ~]# c ...

  8. Python 里 and、or 的计算规则

    引子: >>> print '' or 5 or 05>>> print 5 and 44>>> print '' or 5 or 0 and 4 ...

  9. HttpClient和HttpURLConnection的区别

    总结了网上的一些资源,主要有以下两个观点: 分析一: 在研究Volley框架的源码中,发现它在HTTP请求的使用上比较有意思,在Android 2.3及以上版本,使用的是HttpURLConnecti ...

  10. 设置将Maven的jar包发布到lib

    2,设置将Maven的jar包发布到lib下. Add -> Java Build Path Entries -> Maven Dependencies -> Finish 设置完成 ...