Open
Description
确认
功能改进
问题背景:
在缓存一致性场景中,现有解决方案通常需要显式声明受影响表(如@CacheEvict注解),面对新项目可以轻松解决,但是在常规的屎山生产项目来说,使用缓存会遇到两大痛点:
- 历史代码中数据变更入口分散,难以全面覆盖缓存清理点,开发成本高
- 复杂SQL语句(嵌套查询/JOIN操作等)的表影响关系难以人工维护
功能描述:
对于INSERT/UPDATE/DELETE的sql语句,获取真正受影响的表名,以表名的维度来自定义删除缓存操作,实现缓存数据库一致性
具体功能:
- 对嵌套查询的支持
- 对 JOIN 子句的完整支持
- 对 UNION/UNION ALL 等集合操作的支持
- 对子查询的支持
- 对复杂 WHERE 条件中包含子查询的支持
- 处理了带 schema 的表名
使用CacheEvictInterceptor,用户可以获取sql改动的表,来自定义接入删除缓存的操作(Redis、本地缓存),并且可以通过MappedStatement的Id过滤。而拦截器要做的就是准确无误的解析出正确的表名。我已经在公司的生产项目应用了一个小demo,主要缓存了8-10张表的下拉框常用业务数据,希望能够抽取公共逻辑加入到mp的拦截器插件中。
参考资料
No response
Metadata
Metadata
Assignees
Labels
No labels
Activity