16

大多数人似乎建议在不同的端口(6379 和 6380)上运行单独的 Redis 实例。为什么比创建第二个数据库更普遍推荐这样做?我还没有完全阅读文档,但是大多数示例在连接时并没有真正提到“选择 Redis 数据库”。来自 Ruby 客户端的示例,nrk/predis 的 README:

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

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

4

1 回答 1

34

两个主要原因:

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

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

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

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

于 2012-05-17T22:10:19.490 回答