18

我们目前使用 Redis 作为我们 Web 应用程序的持久缓存,但由于内存和成本有限,我开始考虑表存储是否是一个可行的选择。

我们存储的数据是相当基本的 json 数据,具有明确的 2 部分键,我们将其用于表存储中的分区和行键,所以我希望这意味着快速查询。

我很欣赏一个在内存中,一个在内存中,所以表存储会慢一点,但随着我们的扩展,我相信只有一个 CPU 提供来自 Redis 缓存的数据,而使用表存储我们不会有这个问题减少到我们正在运行的 Web 服务器的数量。

有没有人有任何以这种方式使用表存储的经验或两者之间的比较。

我应该补充一点,我们以非常简约的方式使用 Redis 获取/设置,仅此而已,我们驱逐我们自己的数据,如果空间不足,则将驱逐留给 Redis。

4

3 回答 3

19

这是一个相当广泛/征求意见的问题。但从客观的角度来看,这些是您在决定使用哪个属性时要考虑的属性:

  • 表存储是一种持久的键/值存储。因此,内容不会过期。您将负责清除数据。
  • 表存储可扩展到 500TB。
  • Redis 可跨多个节点水平扩展(或通过 Redis 服务扩展)。相比之下,表存储将在一个分区上提供高达 2,000 个事务/秒,跨存储帐户提供 20,000 个事务/秒,并且要扩展,您需要使用多个存储帐户。
  • 与 VM 或 Redis 服务相比,表存储的成本占用要低得多。
  • Redis 提供了 Azure 存储表之外的功能(例如发布/订阅、内容驱逐等)。
  • 表存储和 Redis 缓存都可以通过端点访问,API 周围有许多特定于语言的 SDK 包装器。
于 2016-10-18T08:52:21.377 回答
5

我找到了一些关于 azure redis 和 table 的材料,希望它可以帮助你。有一个关于 Azure Redis 的视频,其中还包括一个演示,从视频的第 50 分钟开始比较 table storage 和 redis。或许可以作为参考。但细节表现取决于你的应用、数据记录等。表存储的定价取决于表存储的容量,请参阅详细信息。它比redis便宜得多。

于 2016-10-19T10:22:17.197 回答
1

您可能会关心许多差异,包括价格、性能和功能集。并且,数据的持久性和数据的一致性。

因为 redis 是一个内存数据存储,所以它非常昂贵。这样您就可以获得低延迟。在此处查看 Azure 的规划常见问题解答,以大致了解吞吐量方面的 redis 性能。 Azure Redis 规划常见问题解答

Redis 确实有一个可选的持久性功能,如果您希望在服务器很少停机时保留和恢复数据,您可以打开该功能。但它没有强大的一致性保证。

Azure 表存储不是缓存解决方案。这是一种持久存储解决方案,并将数据永久保存在某种磁盘上。从历史上看(免责声明,我没有寻找最新和最好的性能数据)它具有更高的读写延迟。它也是严格的键值存储模型(具有两部分键)。值可以具有属性,但有许多严格的限制,例如可以存储的对象大小、属性长度等。如果您的应用程序遇到这些限制,这些限制是不灵活和痛苦的。

Redis 具有更大的功能集。它可以做键值,但也有很多其他的数据结构,比如集合和列表,许多应用程序可以找到从增加的灵活性中受益的方法。

请参阅“Redis 简介” (redis 文档)

如果您主要倾向于 Azure 技术,则 CosmosDB 可能是另一个可供考虑的替代方案。它非常昂贵,但速度非常快且功能丰富。同时也主要打算成为一个持久存储。

于 2021-01-11T22:50:28.630 回答