【发布时间】:2018-09-26 10:22:29
【问题描述】:
我们有一个使用 SQL 数据库的企业应用程序。数据库访问特征是大约 90% 的读取。更新或创建的数据需要立即更新。缓存需要以高确定性正确失效。在 98% 的情况下,实体由其主键引用。
该应用程序基于 Node.js 并且是 AWS 原生的。由于该应用程序是 AWS 原生的,因此我希望依赖 AWS 的托管服务,而不是托管自己的服务。一种选择是实现我们的基于 Redis 的读取缓存。检索实体后,我们会检查缓存,如果数据未缓存,我们会将其放入缓存中,然后再将其提供给用户。更新这些实体的代码部分将通过主键使缓存无效。
一般来说,在计算机科学中,缓存一致性是最难解决的问题之一。我的观点是,与其实现 Redis 缓存并考虑所有可能的场景以使其正确无效,不如配置一个专门用于读取频繁访问的实体的 Aurora 只读副本更为明智。与我们自己构建的任何东西相比,RDBMS 在缓存方面做得更好。
所以,我面临两种选择——通过自己的缓存实现努力,或者使用只读副本。我个人的意见是使用只读副本。
非常感谢任何建议,一如既往。
【问题讨论】:
标签: mysql node.js amazon-web-services caching redis