多个Redis实例

时间:2012-05-17 22:05:44

标签: redis

大多数人似乎建议在不同的端口(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实例只能使用一个适配器。所以我正在考虑创建第二个数据库或Redis实例,以便隔离两个hubots之间的数据。但在我进一步深入之前,我想了解为什么要使用单独的实例而不是仅创建第二个数据库。

1 个答案:

答案 0 :(得分:33)

两个主要原因:

  1. 使用多个数据库通常被认为是糟糕的,并且有一天会被弃用,并且它们会有一些性能损失,尽管很小。

  2. 主要原因是redis是单线程的,如果你需要两个不同的数据源,另一个redis实例将提高性能,因为它将使用你可能拥有的另一个CPU,而一个实例总是只使用一个。 / p>

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

  4. 然后还有其他优点,例如具有单独的身份验证密码,LRU策略等 - 这只能在实例级别完成。