2012-05-17 65 views
15

大多数人似乎建议在不同端口(6379和6380)上运行单独的Redis实例。为什么更常用的建议是创建第二个数据库?我还没完全通过文档,但大多数示例在连接时没有提及“选择Redis数据库”。从Ruby客户端的例子,手拉/ predis自述:多个Redis实例

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

目前,我们在我们的篝火办公室跑Hubot,和我工作的第二个用于GTalk的,因为你只能在使用单个适配器为每个Hubot实例。所以我正在考虑创建第二个Redis数据库或实例,以便两个Hubots之间的数据是隔离的。但在我进一步研究之前,我想了解为什么要使用单独的实例而不是创建第二个数据库。

+0

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

回答

32

主要有两个原因:

  1. 多个数据库通常被认为不好,有一天会被抛弃,他们有一定的性能损失,但很轻微。

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

  3. 不同的redis实例可以有fdiffecten持久性设置。例如一个实例可以使用只读存储器和其他可以使用的文件作为存储 Redis Persistence

再有其他的优点等具有分开的身份验证密码,LRU策略等 - 其可以仅在实例级来完成。

+0

真棒 - 我觉得有一个很好的理由。谢谢 – brock