【问题标题】:Does Redis support strong consistencyRedis 是否支持强一致性
【发布时间】:2012-11-20 19:39:49
【问题描述】:

我正在考虑将 Java 应用程序移植到 .NET,该应用程序当前大量使用 EhCache,并坚持要支持强一致性 (http://ehcache.org/documentation/get-started/consistency-options) .

我想用 Redis 代替 EhCache,但是 Redis 支持强一致性还是只支持最终一致性?

我看到过关于 Redis 集群的讨论,但我想这离发布还有一点距离。

还是我看错了?如果 Redis 实例完全位于不同的服务器上并为两个前端服务器提供服务,那么在我们需要查看主/从式事件之前它会变得多大?

【问题讨论】:

    标签: redis replication database-replication


    【解决方案1】:

    单个 Redis 实例是一致的。在许多实例中存在一致性选项。 @antirez(Redis 开发人员)最近写了一篇博文,Redis data model and eventual consistency,并推荐 Twemproxy 对 Redis 进行分片,这将使您在许多情况下保持一致。

    我不知道 EhCache,所以无法评论 Redis 是否是合适的替代品。 Twemproxy 的一个潜在问题(移植到 .NET)是它似乎只能在 Linux 上运行。

    单个 Redis 实例可以有多大?取决于你有多少内存。 它会以多快的速度变大?取决于您的数据的外观。

    也就是说,根据我的经验,Redis 存储数据的效率很高。我拥有的一个应用程序在 400mb 的 RAM 中保存了 20 万用户的信息、2 万篇文章、对象之间的所有关系、每周排行榜、统计数据等(总共 33 万键)。

    Redis 易于使用且使用起来很有趣。尝试一下,看看它是否满足您的需求。如果您决定使用它并且可能有一天想要分片,请从一开始就对您的数据进行分片。

    【讨论】:

    • 谢谢,这给了我足够的动力!
    • 此时这是一个旧答案,所以关于 Twemproxy 的注释可能不适用,因为现在有一个标准的 Redis 分片选项 :)
    【解决方案2】:

    Redis 开箱即用不是强一致的。您可能需要应用第 3 方解决方案以使其保持一致。这是来自文档的引用:

    写安全 Redis Cluster 使用节点间异步复制,las​​t failover 胜出隐式合并功能。这意味着最后选出的主数据集最终会替换所有其他副本。分区期间总是有可能丢失写入的时间窗口。但是,对于连接到大多数 master 的客户端和连接到少数 master 的客户端,这些窗口是非常不同的。

    通常您需要同步复制才能在分布式分区系统中实现强一致性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-17
      • 2021-10-31
      • 1970-01-01
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 2015-09-20
      相关资源
      最近更新 更多