大多数人似乎建议在不同的端口(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实例,以便隔离两个hubot之间的数据。但是在进一步介绍之前,我想了解为什么您要使用单独的实例而不是仅创建第二个数据库。
两个主要原因:
使用多个数据库通常被认为是很糟糕的,并且有一天会被弃用,而且它们会有一些性能上的损失,尽管影响很小。
主要原因是redis是单线程的,如果您需要两个不同的数据源,则另一个redis实例将提高性能,因为它将使用您可能拥有的另一个CPU,而一个实例将始终仅使用一个。
同样,不同的redis实例可以具有不同的持久性设置。例如,一个实例只能使用内存,其他实例可以使用文件作为存储 Redis Persistence
然后还有其他优点,例如具有单独的身份验证密码,LRU策略等-只能在实例级别完成。