我有 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/