# data-join **Repository Path**: xglovecode/data-join ## Basic Information - **Project Name**: data-join - **Description**: 一款轻配置、多方式的缓存同步框架,基于mybatis拦截器实现向redis、mq等消息队列发送消息,用户实现Receiver来监听缓存更新事件,从而实现缓存的同步。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-05-01 - **Last Updated**: 2023-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

logo

Data-Join

多数据拦截、多消息队列的缓存同步框架

## 项目介绍 一款轻配置、多扩展的缓存同步框架,通用的数据更新拦截处理器。 ## 架构设计 ![data-join.png](./img/data-join.png) - 拦截器:是对数据将要改变时的拦截。如在MyBatisCacheSyncInterceptor(默认)会监听myabtis的更新操作,当发生更新时,调用sender发送更新事件。 - Sender:对数据更新事件通知的封装。可以使用RedisStreamSender发送至redis中(默认),也可以自定义sender发送至其他消息队列或事件广播中,只要能被后面的Hander监听到即可。 - Hander:负责监听事件发生,并调用相应的Receiver来处理。默认实现是RedisHandler,用于监听redis中stream流的变化。 - Receiver:用户实现的,用于处理数据更新后的操作。具体可见下面的快速开始。 ## 快速开始 1. 导包(暂未上传至仓库,可以下载代码后,导入至本地仓库) ```java cn.xgcode data-join 0.0.1 ``` 2. 在实体类中,添加@CacheSyncModel注解 ```java /** * 添加该注解,表示对应的表名、主键名 */ @CacheSyncModel(table = "user", id = "id") public class User implements Serializable { private Long id; //... } ``` 3. 编写Receiver,用于处理缓存更新 ```java @CacheSyncReceiver(table = "user") public class UserReceiver implements Receiver { @Override public void receive(CacheSyncEvent cacheSyncEvent) { // 处理逻辑 } } ``` ## 版本要求 - redis 5.0以上