caching - RDBMS 与 Redis 的同步

标签 caching redis data-synchronization

我有 RDS 作为事实来源。我面临的一个挑战是将此数据库部分同步到 Redis,以供服务器应用程序使用。这将是一种单向同步,总是朝着一个方向进行,但我无法全神贯注地思考我使用什么工具来使这些同步最好以优化的方式发生。换句话说,与其加载整个数据集,不如仅同步增量。

我希望有人能就如何做到这一点给出一些见解。 谢谢!

最佳答案

大多数 RDBMS 都提供了一种订阅事务的方法,允许您放置“更改数据捕获”事件流。

在这种情况下,您可以订阅数据库事件,并将更改或更新的记录放入 Redis。

例如,您可以使用 Debezium捕获事件,如您所见,Debezium 社区具有用于各种数据源的连接器。

---------          ------------         --------- 
| RDBMS |========>>| Debezium | ======> | Redis |
---------          ------------         ---------

demonstration (主要是 Java)显示了这一点(因为它使用 Redis Streams 和中间状态,所以更丰富一点),事件被这个 method 捕获所以在 MySQL 中捕获 Insert/Update/Delete 并将信息发送到 Redis。

另一个不符合您需要但很有趣的选项是执行“后写”缓存。在这种情况下,您更新 Redis 中的缓存,Redis 使用 Gears 将更新推送到 RDBMS 中.

您可以在此 GitHub repo 中找到有关使用 Redis Gears 进行“后写”的更多信息.

---------          ---------         --------- 
| Redis |========>>| Gears | ======> | RDBMS |
---------          ---------         ---------

关于caching - RDBMS 与 Redis 的同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63514310/

相关文章:

Javascript ajax 延迟加载和函数组织

python - 需要帮助使用 pip 安装特定的 python 包

redis - 有什么方法可以使用字符串作为 Redis 排序集 (zset) 中的分数?

ruby - 无法从 Sinatra 连接到 Redis

sql - 同步客户端-服务器数据库

algorithm - 如何最小化重新传输的数量以同步N个副本?

html - 如何强制网络浏览器不缓存图像

asp.net - 性能 : asp. 网络缓存与单例

session - 在 Magento 中对 session 和后端缓存使用单个 Redis 实例是个坏主意吗?

ios - 检查来自 Alamofire 和 Swift 的多个异步响应