Redis Pub/Sub 多机房部署 | 看看俺 – KanKanAn.com

标签: | 发表时间:2018-09-14 13:40 | 作者:
出处:http://blog.kankanan.com

由于 Master 上 Publish 的消息会自动同步到所有 Slaves,Redis Pub/Sub 很容易扩展

Redis PubSub scales really easily since the Master/Slave replication automatically publishes to all slaves.

引用自  Redis PUBLISH/SUBSCRIBE limits - Stack Overflow

可以在 Master 上 Publish 消息,然后在 Slave 上 Subscribe 消息,反之不行

With replication in-place the publisher can publish in the master host and the subscribers can subscribe to the slave host.

It is important to mention that this relationship is one-way. Master –> Slave relationship are unidirectional. It is impossible to publish to the slave and subscribe to the master.

The conclusion is simple: Two ways pub/sub channels across servers require at least 4 Redis hosts.

引用自  Pub Sub Across Servers Using Redis | Manu Cohen-Yashar's Blog

需要注意的是,Slave 虽然不可写(Readonly),但是照样可以 Pub/Sub, 只是 Publish 的消息不会同步到 Master,所以不会被 Master 上的 Subscriber 接收到, 但是 Slave 自身的 Subscriber 仍工作正常。

多机房部署的情况下,2 个 Redis 实例可实现双向通讯

redis-pub_sub_multi_datacenter-2.png但是比较低效,Master 所在机房 Publish 的消息会在机房间传输一次(Sync 一次), Slave 所在机房 Publish 的消息会在机房间传输两次(Send、Sync 各一次), 而且 Slave 机房部署的应用需要跨机房直接连接到 Master 才能进行 Publish。

多机房部署的情况下,4 个 Redis 实例可以实现高效的双向通讯

redis-pub_sub_multi_datacenter-4.png每一次 Publish 的消息会在机房间传输一次,机房间只有 Master/Slave 同步流量。

Pub/Sub 跨机房部署带来的问题

从 Slave Subscribe 消息后,消息 Publish 一方无法获知 Subscriber 数量

 1: # Publish to master, subscribe from master.
 2: $ redis-cli -h master.local subscribe test &
 3: [1] 20590
 4: $ Reading messages... (press Ctrl-C to quit)
 5: 1) "subscribe"
 6: 2) "test"
 7: 3) (integer) 1
 8: $ 
 9: $ redis-cli -h master.local  publish test "hello from master"
10: 1) "message"
11: 2) "test"
12: 3) "hello from master"
13: (integer) 1
14: $ fg
15: redis-cli subscribe test
16:   C-c C-c
17: $ 
18: # Publish to master, subscribe from slave.
19: $ redis-cli -h slave.local -p 6380 subscribe test &
20: [1] 20592
21: $ Reading messages... (press Ctrl-C to quit)
22: 1) "subscribe"
23: 2) "test"
24: 3) (integer) 1
25: $ 
26: $ redis-cli -h master.local publish test "hello from master"
27: (integer) 0
28: 1) "message"
29: 2) "test"
30: 3) "hello from master"
31: $ 
  • 行  13

    在 Master 上订阅时,发布方得知的订阅者人数为 1

  • 行  27

    在 Slave 上订阅时,发布方得知的订阅者人数为 0

相关 [redis pub sub] 推荐:

Redis Pub/Sub 多机房部署 | 看看俺 – KanKanAn.com

- -
由于 Master 上 Publish 的消息会自动同步到所有 Slaves,Redis Pub/Sub 很容易扩展. 可以在 Master 上 Publish 消息,然后在 Slave 上 Subscribe 消息,反之不行. 需要注意的是,Slave 虽然不可写(Readonly),但是照样可以 Pub/Sub, 只是 Publish 的消息不会同步到 Master,所以不会被 Master 上的 Subscriber 接收到, 但是 Slave 自身的 Subscriber 仍工作正常.

去PUB

- lazyzooly - 速食欢喜
先一个男生上来唱歌,长得不错,唱得也不错,但我只想站起来把他长长的围巾扯掉. 再一个女生上来唱歌,脸像40岁,上半身像30岁,下半身像20岁. 压轴的是一位眼睛不好的歌手……难免令我想到,周云蓬难道引导了一股新潮流. 同去的男人要向我倾诉他前几天在北京一段令他心跳的记忆,让其它人不要听,觉得:“只有作家能够理解我,平常人不懂.

Redis 负载监控——redis-monitor

- - ITeye资讯频道
redis-monitor是一个Web可视化的 redis 监控程序. 使用 Flask 来开发的,代码结构非常简单,适合移植到公司内网使用. redis 服务器信息,包括 redis 版本、上线时间、 os 系统信息等等. 实时的消息处理信息,例如处理 command 数量、连接总数量等. 内存占用、 cpu 消耗实时动态图表.

Redis 起步

- - 博客园_首页
Rdis和JQuery一样是纯粹为应用而产生的,这里记录的是在CentOS 5.7上学习入门文章:. Redis是一个key-value存储系统. 和Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表)、sets(集合)和zsets(有序集合)几种数据类型.

redis 配置

- - 谁主沉浮
# 当配置中需要配置内存大小时,可以使用 1k, 5GB, 4M 等类似的格式,其转换方式如下(不区分大小写). # 内存配置大小写是一样的.比如 1gb 1Gb 1GB 1gB. # daemonize no 默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes. # 当redis在后台运行的时候,Redis默认会把pid文件放在/var/run/redis.pid,你可以配置到其他地址.

Cassandra代替Redis?

- - Tim[后端技术]
最近用Cassandra的又逐渐多了,除了之前的360案例,在月初的QCon Shanghai 2013 篱笆网也介绍了其使用案例. 而这篇 百万用户时尚分享网站feed系统扩展实践文章则提到了Fashiolista和Instagram从Redis迁移到Cassandra的案例. 考虑到到目前仍然有不少网友在讨论Redis的用法问题,Redis是一个数据库、内存、还是Key value store?以及Redis和memcache在实际场景的抉择问题,因此简单谈下相关区别.

redis 部署

- - CSDN博客云计算推荐文章
一、单机部署 tar xvf redis-2.6.16.tar.gz cd redis-2.6.16 make make PREFIX=/usr/local/redis install  #指定安装目录为/usr/local/redis,默认安装安装到/usr/local/bin. # chkconfig: 2345 80 10       #添加redhat系列操作系统平台,开机启动需求项(运行级别,开机时服务启动顺序、关机时服务关闭顺序) # description:  Starts, stops redis server.

nagios 监控redis

- - C1G军火库
下载check_redis.pl. OK: REDIS 2.6.12 on 192.168.0.130:6379 has 1 databases (db0) with 49801 keys, up 3 days 14 hours - connected_clients is 1, blocked_clients is 0 | connected_clients=1 blocked_clients=0.

转 redis vs memcached

- - 数据库 - ITeye博客
传统MySQL+ Memcached架构遇到的问题.   实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:.   1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间.

Redis优化

- - 数据库 - ITeye博客
键名:尽量精简,但是也不能单纯为了节约空间而使用不易理解的键名. 键值:对于键值的数量固定的话可以使用0和1这样的数字来表示,(例如:male/female、right/wrong). 当业务场景不需要数据持久化时,关闭所有的持久化方式可以获得最佳的性能,不过一般都要持久化比较安全,而且是快照和aof同时使用比较安全.