大多数人似乎建议在不同的端口(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持久化
还有其他优点,如拥有单独的身份验证密码、LRU 策略等 - 这只能在实例级别完成。