From c1c0590ccea495f673398ef116b0fcf865d350c8 Mon Sep 17 00:00:00 2001
From: Hanserwei <2628273921@qq.com>
Date: Tue, 21 Oct 2025 19:45:43 +0800
Subject: [PATCH] =?UTF-8?q?feat(data-align):=20=E5=AE=9E=E7=8E=B0=E7=AC=94?=
=?UTF-8?q?=E8=AE=B0=E7=82=B9=E8=B5=9E=E5=A2=9E=E9=87=8F=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E5=A4=84=E7=90=86=E4=B8=8E=E5=B8=83=E9=9A=86=E8=BF=87=E6=BB=A4?=
=?UTF-8?q?=E5=99=A8=E6=A0=A1=E9=AA=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 新增 Redis 布隆过滤器 Lua 脚本,用于校验日增量变更数据- 创建 InsertRecordMapper 及 XML 映射文件,支持笔记和用户点赞数落库
- 定义 LikeUnlikeNoteMqDTO用于 MQ 消息传输
- 配置 RedisTemplate 支持 JSON 序列化
- 修改 TableConstants 中 buildTableNameSuffix 方法参数类型为 long
- 实现 TodayNoteLikeIncrementData2DBConsumer 消费者逻辑:
- 使用布隆过滤器去重判断 - 数据库写入操作使用事务保证原子性
- 写入成功后更新布隆过滤器
- 更新 IntelliJ IDEA 数据源映射与 SQL 检查配置
---
.idea/data_source_mapping.xml | 1 +
.idea/inspectionProfiles/Project_Default.xml | 3 +
.../align/config/RedisTemplateConfig.java | 31 +++++++
.../align/constant/RedisKeyConstants.java | 21 +++++
.../data/align/constant/TableConstants.java | 2 +-
...TodayNoteLikeIncrementData2DBConsumer.java | 88 +++++++++++++++++++
.../domain/mapper/InsertRecordMapper.java | 20 +++++
.../align/model/vo/LikeUnlikeNoteMqDTO.java | 31 +++++++
.../lua/bloom_today_note_like_check.lua | 16 ++++
.../mapperxml/InsertRecordMapper.xml | 13 +++
10 files changed, 225 insertions(+), 1 deletion(-)
create mode 100644 han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/config/RedisTemplateConfig.java
create mode 100644 han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/constant/RedisKeyConstants.java
create mode 100644 han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/domain/mapper/InsertRecordMapper.java
create mode 100644 han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/model/vo/LikeUnlikeNoteMqDTO.java
create mode 100644 han-note-data-align/src/main/resources/lua/bloom_today_note_like_check.lua
create mode 100644 han-note-data-align/src/main/resources/mapperxml/InsertRecordMapper.xml
diff --git a/.idea/data_source_mapping.xml b/.idea/data_source_mapping.xml
index a734c44..34a3631 100644
--- a/.idea/data_source_mapping.xml
+++ b/.idea/data_source_mapping.xml
@@ -3,6 +3,7 @@
+
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index 1baedb3..863e3f2 100755
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -24,5 +24,8 @@
+
+
+
\ No newline at end of file
diff --git a/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/config/RedisTemplateConfig.java b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/config/RedisTemplateConfig.java
new file mode 100644
index 0000000..dbc549d
--- /dev/null
+++ b/han-note-data-align/src/main/java/com/hanserwei/hannote/data/align/config/RedisTemplateConfig.java
@@ -0,0 +1,31 @@
+package com.hanserwei.hannote.data.align.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+@Configuration
+public class RedisTemplateConfig {
+
+ @Bean
+ public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) {
+ RedisTemplate redisTemplate = new RedisTemplate<>();
+ // 设置 RedisTemplate 的连接工厂
+ redisTemplate.setConnectionFactory(connectionFactory);
+
+ // 使用 StringRedisSerializer 来序列化和反序列化 redis 的 key 值,确保 key 是可读的字符串
+ redisTemplate.setKeySerializer(new StringRedisSerializer());
+ redisTemplate.setHashKeySerializer(new StringRedisSerializer());
+
+ // 使用 Jackson2JsonRedisSerializer 来序列化和反序列化 redis 的 value 值, 确保存储的是 JSON 格式
+ Jackson2JsonRedisSerializer