使用 Lambda 的 DynamoDB 在插入时更新 Redis 缓存
DynamoDB with Lambda to update Redis cache on Insertions
我有一个 DynamoDB
table,我启用了 Dynamo Stream
。
我希望我的应用程序能够在被询问时响应前 100 个事件(按日期)。
为此,我想到编写一个 Lambda
函数,每当新数据流式传输时都会执行该函数,并用新事件更新 Redis
缓存(以防万一它真的是一个事件) .
Lambda 代码:
- 从缓存中读取当前的 top100 事件。
- 将新事件推到数组的开头。
- 从数组中切出前 100 个事件。
- 更新缓存。
让我担心的一件事是竞争条件,当以上 Lambda
函数的多个实例将使用不同的流记录执行时。
我找不到更多关于 Dynamo Streams
工作原理的信息,所以我什至不确定上述情况是否会发生,这就是我问你的原因。
你的问题可以通过你如何定义你的redis操作来解决。
Redis 是单线程的,您可以在单个 Redis 事务中定义完整的缓存更新操作。
我有一个 DynamoDB
table,我启用了 Dynamo Stream
。
我希望我的应用程序能够在被询问时响应前 100 个事件(按日期)。
为此,我想到编写一个 Lambda
函数,每当新数据流式传输时都会执行该函数,并用新事件更新 Redis
缓存(以防万一它真的是一个事件) .
Lambda 代码:
- 从缓存中读取当前的 top100 事件。
- 将新事件推到数组的开头。
- 从数组中切出前 100 个事件。
- 更新缓存。
让我担心的一件事是竞争条件,当以上 Lambda
函数的多个实例将使用不同的流记录执行时。
我找不到更多关于 Dynamo Streams
工作原理的信息,所以我什至不确定上述情况是否会发生,这就是我问你的原因。
你的问题可以通过你如何定义你的redis操作来解决。
Redis 是单线程的,您可以在单个 Redis 事务中定义完整的缓存更新操作。