Redis Pub / Sub实用性?

时间:2012-07-04 19:24:24

标签: redis publish-subscribe

我有一个问题让我非常烦恼。 Redis的pub / sub功能实际上用于什么?我只能想到TCP上的进程间通信(本地或分布式),但不是很多。

有人可以证明我错了。

2 个答案:

答案 0 :(得分:5)

这是插入事件流的简单方法,通常是在进程或机器之间。例如,用户创建已发布的事件。一个进程处理从事件更新数据库,另一个进程更新用户统计信息,另一个全局统计信息,另一个进程更新文本搜索数据库等。它们都通过订阅频道松散耦合。您可以添加用于测试更新和监视系统的新进程。它与消息队列略有不同,因为在处理之前没有存储消息,但Redis有其他结构用于那些类型的作业。

答案 1 :(得分:0)

根据我的经验,一个真实的用例。 假设您的虚拟私有云主要部署在4个不同的服务器(节点,虚拟机)上。

Web应用程序为其静态数据缓存维护内存中的Java映射,偶尔会发生变化。

现在,每当数据库中的数据发生变化时,您需要所有服务器在内存缓存中更新自己的服务器,这就是问题所在。

一种方法是将redis中的所有静态数据或任何其他缓存维护在单独的服务器上,并根据调度程序更新缓存。但此处访问静态内容,偶尔更改需要调度程序和单独的缓存服务器像redis或memcached等,每个服务器都指向这个外部缓存。

在这里使用redis的pubsub : 所有服务器都订阅redis频道,如果redis发布消息,那么当有更新,添加,删除数据作为消息给所有订阅者时。收到消息对象及其更新类型(ADD,REMOVED,UPDATED) )每个服务器更新其内存静态数据映射。