在AWS中使用MySQL触发器清空更新和插入时的缓存

Tho*_*mas 6 mysql triggers amazon-web-services redis

我正在AWS上构建一个架构,其中有几个EC2实例作为Web服务器和一个中央MySQL数据库(RDS).EC2实例已安装Redis以缓存单个数据库行.当MySQL中的行发生变化时,我希望每个实例也更新相应的缓存条目.

在AWS环境中执行此操作的最佳方法是什么?

Den*_*rdy 5

不要使用触发器.确保正确提交(而不是回滚),然后从应用程序层中刷新.

如果不这样做,您可能会遇到并发请求使用旧数据重新填充缓存的情况(因为它们还没有看到新数据),因为它将从SQL触发器中的缓存中删除.


Ken*_*ane 1

如果您使用队列服务器(amazon SQS、redis pubsub 等),您可以为您想要过期的每条记录放入一个条目到队列中,并让一个工作进程监听该队列,并在收到消息时告诉它哪条记录要使其无效,将连接到缓存并使该记录过期。

如果您有一台或多台缓存服务器,则此方法有效,您只需要为您拥有的每台缓存服务器配备一名工作人员,或者一名可以连接到每台缓存服务器的工作人员。许多工人更具可扩展性。