什么是多重的Redis数据库的点?(What's the Point of Multiple

2019-09-01 03:52发布

所以,我来到这里,我想我段中的Redis到不同的数据库中存储,因为我有时需要使用密钥对一个特定类型的数据的命令的数据,并希望分开它做更快的地方。

如果我段放入多个数据库,一切仍是单线程的,我仍然只得到使用一个核心。 如果我只是发动对同一个盒子的Redis的另一个实例,我可以使用额外的核心。 最重要的是,我不能说出的Redis数据库,或给他们任何形式的多个逻辑标识符。 因此,所有这一切说,为什么/时,我会永远想使用多个Redis的数据库,而不是仅仅旋转起来Redis的额外的实例为每个额外的数据库我想要什么? 而与此相关的,为什么不尝试的Redis利用每个额外的数据库我添加一个额外的核心是什么? 什么是跨数据库被单线程的优势在哪里?

Answer 1:

原则上,在同一实例的Redis数据库并不比在RDBMS数据库实例的模式不同。

因此,所有这一切说,为什么/时,我会永远想使用多个Redis的数据库,而不是仅仅旋转起来Redis的额外的实例为每个额外的数据库我想要什么?

有一个在同一个redis的情况下使用Redis的数据库的一个明显的优势,那就是管理。 如果你旋转了一个单独的实例为每个应用程序,并让我们说你有3个应用程序,这是3种独立Redis的情况下,其中的每一个可能需要在生产HA的奴隶,所以这是6个总实例。 从管理的角度来看,因为你需要监控所有的人这就会变得混乱真正的快,做升级/补丁等,如果你不超载的高我Redis的计划/ O,与从单个实例比较简单,更易于管理,提供符合您的SLA。



Answer 2:

你不想在一个单一的Redis实例使用多个数据库。 它已经过时,正如你提到的,多个实例让你利用多核的优势。 如果您使用的数据库选择你将不得不升级时进行重构。 监控和管理多个实例并不困难,也不痛苦。

事实上,你会得到通过隔离每个DB基于实例更好的指标。 每个实例将有反映数据的部分,它可以允许更好的调整和反应更灵敏,准确的监测统计。 使用最新版本,并通过实例分开你的数据。

作为Jonaton说,不使用按键命令。 你会发现更好的性能,如果你简单地创建一个关键指标。 每当添加一个关键,关键的名称添加到组。 一旦扩展,因为它会采取显著时间返回键命令是不是非常有用。

让访问模式确定如何组织你的数据,而不是存储它认为你的作品,然后周围工作如何访问和后剁碎的方式。 你会看到更好的性能和发现数据消费代码通常是更清洁和更简单。

对于单线程的,认为Redis的是专为速度和原子。 当然动作修改在一个DB数据上的另一个数据库不需要等待,但如果该操作将被保存到转储文件,或奴隶交易处理? 在这一点上,你开始进入并发编程的杂草。

通过使用多个实例打开多线程复杂到简单的信息传递方式系统。



Answer 3:

即使萨尔瓦托雷圣菲利波(Redis的创作者)认为这是一个坏主意在Redis的使用多个数据块。 在这里看到他的评论:

https://groups.google.com/d/topic/redis-db/vS5wX8X4Cjg/discussion

我明白这可能是有用的,但不幸的是,我认为Redis的多个数据库错误,我在所有... Redis的设计,最糟糕的决定没有任何一种真正的收获的,它使内部复杂得多。 现实情况是,数据库不为一些原因很好地扩展,钥匙和VM像活跃到期。 如果DB选择可以使用字符串来执行我可以看到被用作一个可伸缩的O(1)词典层此功能,相反,它是没有的。

随着DB号,有几个DB的默认设置,我们是更好地沟通一下这个功能,以及如何可以用我的想法。 我希望,在某些时候,我们可以在所有的拖放多个数据块的支持,但我认为这是可能为时已晚,因为是很多人依靠这个功能对他们的工作。



Answer 4:

  1. 我真的不知道在单个实例上有多个数据库的任何好处。 我想,如果多个服务使用同一个数据库服务器(S)是有用的,这样就可以避免键冲突。

  2. 我不建议围绕建设使用KEYS命令,因为它是为O(n),并且不能很好地扩展。 你在使用它,你可以以另一种方式实现? 也许Redis的是不是你的最佳匹配,如果喜欢的功能KEYS是至关重要的。

  3. 我认为他们提及他们的常见问题单线程服务器的好处,但更主要的是简单 - 你没有任何实际的方式并发打扰。 每一个动作都是阻塞,所以没有两件事情可以改变在同一时间的数据库。 理想情况下,你将有一个(或多个)每每台服务器的核心实例,并使用一致性哈希算法(或代理)的键在他们之间划分。 当然,你会失去一些功能 - 管道将只在同一台服务器上工作上的事情,各种各样变得更加困难等。



Answer 5:

Redis的数据库可以在部署应用程序,其中的新版本需要与不同实体工作的新版本的少数情况下使用。



Answer 6:

我使用Redis的用于实现电子邮件地址的黑名单,我有不同程度的黑名单的不同的TTL值,因此在相同的情况下具有不同的DB帮助了我很多。



Answer 7:

在一个实例中使用多个数据库可能在以下情况下有用:

同一个数据库的不同副本可用于生产,开发或使用实时数据测试。 人们可以使用复制克隆的Redis实例来达到同样的目的。 然而,前一种方法是对现有正在运行的程序,只是选择合适的数据库切换到预期的模式更容易。



文章来源: What's the Point of Multiple Redis Databases?
标签: redis