欢迎来真孝善网,为您提供真孝善正能量书籍故事!

深度解析:Redis的“发布/订阅”模式应用与优化

时间:11-08 现代故事 提交错误

“发布/订阅”模式是Redis自带的一对多消息通信模式。

(一)测试用例

1、发送端

导入redis

导入json

导入日期时间

客户端=redis.Redis()

而True:

message=input("请输入要发布的信息")

now_time=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

数据={"消息": 消息,"时间": now_time}

客户端=发布("pubinfo",json.dumps(数据))

2、接收端

导入redis

导入json

客户端=redis.Redis()

监听器=client.pubsub(ignore_subscribe_messages=True)

监听器.subscribe("pubinfo")

对于listener.listen():中的消息

data=json.loads(message["data"].decode())

print(f"收到新消息:{data["message"]},发送时间:{data["time"]}")

(二)“发布/订阅”相关命令

发布消息

client.publish("频道名称", "消息") 订阅频道

#listener.listen()是一个阻塞方法。当程序运行到这里时,如果通道中没有数据,程序就会“卡住”。直到通道中有新的信息时才会继续运行后续的代码。

监听器=client.pubsub()

监听器.subscribe("pubinfo")

对于listener.listen():中的消息

print(message)message是一个字典,它的内容有两种情况:

第一次进入for循环时,数据为:{"type": "subscribe", "pattern": None, "channel": b"pubinfo", "data": 1} 该信息表示订阅频道“pubinfo”成功。如果不想显示这些内容,可以在初始化“发布/订阅”对象时指定一个参数:ignore_subscribe_messages=True。从第二个周期开始,就有了正式的频道信息,格式为:{"type": "message", "pattern": None, "channel": b"pubinfo", "data": b"{"message" : "yy", "time": "2018-08-19 13:38:58"}"} 发送者发送的信息存储在字典中data的key对应的值中。仍然是bytes类型数据,需要解码为字符串。进一步处理一个“发布/订阅”实例可以订阅多个频道,格式为:

关于深度解析:Redis的“发布/订阅”模式应用与优化的内容到此结束,希望对大家有所帮助。

用户评论

像从了良

redis的发布订阅机制真的很有意思啊,可以实时更新数据。

    有12位网友表示赞同!

枫无痕

之前不知道redis还有发布订阅的功能,现在学习一下下

    有14位网友表示赞同!

凝残月

想用发布订阅来实现一个聊天机器人系统,看能不能用上redis。

    有17位网友表示赞同!

青墨断笺み

我用的消息队列都是数据库里的功能,没想到redis也能做这种事!

    有19位网友表示赞同!

爱你心口难开

讲真,Redis的发布订阅机制简直太方便了,实时更新信息轻轻松松。

    有14位网友表示赞同!

咆哮

学习Redis真是不容易啊,这个发布订阅也不算简单呀,需要仔细理解才行。

    有12位网友表示赞同!

丢了爱情i

在项目中可以用redis的发布订阅来实现数据同步吗?可以详细说一下吗?

    有8位网友表示赞同!

有些人,只适合好奇~

感觉Redis发布订阅比数据库里的消息队更灵活一些吧。

    有7位网友表示赞同!

空谷幽兰

最近在想尝试用Redis做一些异步处理,发布订阅功能很吸引我。

    有18位网友表示赞同!

孤岛晴空

对于实时应用来说,redis的发布订阅机制还是很不错的选择啊。

    有18位网友表示赞同!

大王派我来巡山!

学习一下Redis的发布订阅机制,不知道能不能用于构建分布式系统?

    有11位网友表示赞同!

野兽之美

这个功能真的一般人用不太到吧?还是说我有用的地方我还没找到。

    有10位网友表示赞同!

青袂婉约

听说是很多大型网站都在使用Redis做消息队列,确实很强大啊。

    有12位网友表示赞同!

抓不住i

这篇文章讲得好像很简单,但是实际操作起来应该也不容易吧?

    有8位网友表示赞同!

鹿叹

想问一下,Redis的发布订阅机制有什么优缺点呢?

    有20位网友表示赞同!

限量版女汉子

这个机制可以用在很多场景,感觉很有潜力啊!

    有7位网友表示赞同!

容纳我ii

我需要实现一个实时聊天功能,你觉得Redis的发布订阅合适吗?

    有20位网友表示赞同!

厌归人

对于新手来说,学习Redis的发布订阅需要花费多少时间?

    有8位网友表示赞同!

【深度解析:Redis的“发布/订阅”模式应用与优化】相关文章:

1.蛤蟆讨媳妇【哈尼族民间故事】

2.米颠拜石

3.王羲之临池学书

4.清代敢于创新的“浓墨宰相”——刘墉

5.“巧取豪夺”的由来--米芾逸事

6.荒唐洁癖 惜砚如身(米芾逸事)

7.拜石为兄--米芾逸事

8.郑板桥轶事十则

9.王献之被公主抢亲后的悲惨人生

10.史上真实张三丰:在棺材中竟神奇复活