0

我有一个用例,我在 Dynamo db 中的两个表中写入数据,即事务中的 t1 和 t2。我的应用程序需要从这些表中读取数据很多次(1 次写入,至少 4 次读取)。我正在考虑 DAX 与弹性缓存。有人有什么建议吗?在此先感谢 K

4

3 回答 3

5

ElastiCache 不适用于 DynamoDB。

DAX 适用于阅读量大的应用程序,例如您的应用程序。但请注意,DAX 仅适用于最终一致的读取,因此不要将它与银行应用程序等一起使用,因为这些应用程序的信息始终需要完全最新。如果没有更多信息,很难说出更多信息,这些只是需要考虑的两个一般要点。

Amazon DynamoDB Accelerator (DAX) 是一种完全托管的、高度可用的内存缓存,可以将 Amazon DynamoDB 响应时间从几毫秒缩短到几微秒,即使是每秒数百万个请求。虽然 DynamoDB 提供一致的个位数毫秒延迟,但带有 DAX 的 DynamoDB 将性能提升到一个新的水平,对于读取繁重的工作负载,每秒数百万个请求的响应时间以微秒为单位。借助 DAX,即使热门事件或新闻故事以您的方式推动前所未有的请求量,您的应用程序也能保持快速响应。无需调音。https://aws.amazon.com/dynamodb/dax/

于 2020-11-28T18:42:22.767 回答
1

我建议将 DAX 与 DynamoDB 一起使用,前提是您使用项目级 API(而不是查询级 API)(例如 GetItem API)进行更多读取调用。

为什么?DAX 有一种奇怪的行为,如下所示。来自,AWS

“每次对 DAX 的写入都会更改项目缓存的状态。但是,对项目缓存的写入不会影响查询缓存。(DAX 项目缓存和查询缓存用于不同的目的,并且彼此独立运行。)”

因此,如果我详细说明,如果您的查询操作被缓存,然后如果您编写了影响先前缓存查询的结果的操作,并且如果该操作尚未过期,那么在这种情况下,您的查询缓存结果将过时。

这个不同步的问题,也在这里讨论。

于 2021-11-17T13:47:41.443 回答
1

AWS 建议您使用 **DAX作为此要求的解决方案。弹性缓存是一种旧方法,除了缓存数据之外,它还用于存储会话状态。

DAX 广泛用于通过最终一致读取的密集读取以及延迟敏感的应用程序。DAX 还使用这些参数存储缓存:-

  1. 项目缓存 - 使用基于 GetItem 结果的项目填充。
  2. 查询缓存 - 基于使用查询或扫描方法时使用的参数

干杯!

于 2020-03-19T23:38:08.877 回答