Commit e266a0fc4aae49b310109db2f59d985ff7e5a073
1 parent
f03143c4
♻️ refactor(cache): 开启事务感知以优化缓存管理
Showing
2 changed files
with
12 additions
and
3 deletions
yudao-framework/yudao-spring-boot-starter-biz-tenant/src/main/java/cn/iocoder/yudao/framework/tenant/config/YudaoTenantAutoConfiguration.java
| ... | ... | @@ -192,7 +192,12 @@ public class YudaoTenantAutoConfiguration { |
| 192 | 192 | RedisCacheWriter cacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory, |
| 193 | 193 | BatchStrategies.scan(yudaoCacheProperties.getRedisScanBatchSize())); |
| 194 | 194 | // 创建 TenantRedisCacheManager 对象 |
| 195 | - return new TenantRedisCacheManager(cacheWriter, redisCacheConfiguration, tenantProperties.getIgnoreCaches()); | |
| 195 | + TenantRedisCacheManager cacheManager = new TenantRedisCacheManager(cacheWriter, redisCacheConfiguration, | |
| 196 | + tenantProperties.getIgnoreCaches()); | |
| 197 | + // 开启事务感知:@Transactional 方法内的 @CacheEvict / @CachePut 自动延迟到 afterCommit, | |
| 198 | + // 避免事务未提交就清缓存被并发读穿写脏值;无事务时立即生效,行为不变 | |
| 199 | + cacheManager.setTransactionAware(true); | |
| 200 | + return cacheManager; | |
| 196 | 201 | } |
| 197 | 202 | |
| 198 | 203 | } | ... | ... |
yudao-framework/yudao-spring-boot-starter-redis/src/main/java/cn/iocoder/yudao/framework/redis/config/YudaoCacheAutoConfiguration.java
| ... | ... | @@ -75,8 +75,12 @@ public class YudaoCacheAutoConfiguration { |
| 75 | 75 | RedisConnectionFactory connectionFactory = Objects.requireNonNull(redisTemplate.getConnectionFactory()); |
| 76 | 76 | RedisCacheWriter cacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(connectionFactory, |
| 77 | 77 | BatchStrategies.scan(yudaoCacheProperties.getRedisScanBatchSize())); |
| 78 | - // 创建 TenantRedisCacheManager 对象 | |
| 79 | - return new TimeoutRedisCacheManager(cacheWriter, redisCacheConfiguration); | |
| 78 | + // 创建 TimeoutRedisCacheManager 对象 | |
| 79 | + TimeoutRedisCacheManager cacheManager = new TimeoutRedisCacheManager(cacheWriter, redisCacheConfiguration); | |
| 80 | + // 开启事务感知:@Transactional 方法内的 @CacheEvict / @CachePut 自动延迟到 afterCommit, | |
| 81 | + // 避免事务未提交就清缓存被并发读穿写脏值;无事务时立即生效,行为不变 | |
| 82 | + cacheManager.setTransactionAware(true); | |
| 83 | + return cacheManager; | |
| 80 | 84 | } |
| 81 | 85 | |
| 82 | 86 | } | ... | ... |