多个Redis实例

bro*_*ock 16 redis

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

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

我们目前在我们办公室使用Campfire运行Hubot,我正在为GTalk开发第二个,因为每个Hubot实例只能使用一个适配器.所以我正在考虑创建第二个数据库或Redis实例,以便隔离两个hubots之间的数据.但在我进一步深入之前,我想了解为什么要使用单独的实例而不是仅创建第二个数据库.

Not*_*fer 34

两个主要原因:

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

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

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

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