问题描述
我有RDS作为真理之源。我面临的一个挑战是使该数据库部分同步到Redis,以使其可用于服务器应用程序。这将是始终沿一个方向进行同步的一种方式,但是我无法集中精力使用哪些工具来使这些同步最好以优化的方式进行。换句话说,如果仅同步增量,则比加载整个数据集要好。
我希望有人可以提供一些有关如何完成此操作的见解。 谢谢!
解决方法
大多数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 |
--------- --------- ---------