将 RDBMS 同步到 Redis

Posted

技术标签:

【中文标题】将 RDBMS 同步到 Redis【英文标题】:Syncs of RDBMS to Redis 【发布时间】:2020-08-20 23:09:55 【问题描述】:

我有 RDS 作为事实来源。我面临的一个挑战是将此数据库部分同步到 Redis 以使其可供服务器应用程序使用。这将是一种始终朝一个方向进行的单向同步,但我无法理解我使用哪些工具来使这些同步以优化的方式发生。换句话说,与其加载整个数据集,不如只同步增量。

我希望有人可以就如何做到这一点提供一些见解。 谢谢!

【问题讨论】:

只有当mysql数据改变而不是整个表时才能更新Redis。 【参考方案1】:

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

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

例如,您可以使用Debezium 来捕获事件,您可以看到 Debezium 社区有各种数据源的连接器。

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

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

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

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

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

【讨论】:

以上是关于将 RDBMS 同步到 Redis的主要内容,如果未能解决你的问题,请参考以下文章

Redis的同步机制

DataX 使用rdbms插件同步数据库

mysql 触发器学习(可以将mysql数据同步到redis)

Redis高可用架构之主从同步

Redis-- 主从同步

Redis-- 主从同步