多个 Redis 实例

16

大多数人似乎建议在不同端口(6379和6380)上运行单独的Redis实例。为什么这比创建第二个数据库更常见?我还没有完全阅读文档,但大多数示例在连接时并没有真正提到“选择一个Redis数据库”。以下是来自Ruby客户端nrk/predis的示例:

$redis = new Predis\Client(array(
    'scheme' => 'tcp',
    'host'   => '10.0.0.1',
    'port'   => 6379,
));

我们目前在办公室使用Campfire运行Hubot,并且我正在为GTalk开发第二个Hubot,因为每个Hubot实例只能使用单个适配器。因此,我考虑创建第二个Redis数据库实例,以便两个Hubot之间的数据是隔离的。但在继续之前,我想了解为什么要使用单独的实例而不是只创建第二个数据库。


如果有其他人正在做同样的事情,当您使用两个hubot和两个redis实例时,必须指定REDISTOGO_URL环境变量。 - brock
1个回答

36

两个主要原因:

  1. 使用多个数据库通常被认为是不好的,未来可能会弃用,并且它们有一些性能惩罚,但是相当小。

  2. 主要原因是redis是单线程的。如果您需要两个不同的数据源,则另一个redis实例将提高性能,因为它将利用您可能拥有的另一个CPU,而一个实例将始终仅利用一个。

  3. 此外,不同的redis实例可以具有不同的持久性设置。例如,一个实例可以仅使用内存,而另一个实例可以将文件用作存储。 Redis Persistence

然后还有其他优点,例如具有单独的身份验证密码、LRU策略等,这些只能在实例级别进行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接