refactor(cache): 缓存操作接口化,支持 Redis/Caffeine 双实现切换
将系统所有缓存操作从 `RedisUtil` 迁移至 `CacheOperations` 接口, 通过 `gym.cache.type` 配置选择 Redis 或 Caffeine 实现。 变更内容: - 新增 CacheOperations 接口,定义 get/set/delete/hasKey/expire/deleteByPattern 等标准方法 - 新增 RedisCacheOperations 实现(基于 ReactiveRedisTemplate,默认实现) - 新增 CaffeineCacheOperations 实现(基于 Caffeine 本地缓存) - 新增 CacheProperties 配置类,支持 Caffeine 容量/过期等参数配置 - 新增 CacheAutoConfiguration 自动装配,通过 AutoConfiguration.imports 注册 - 全系统 17 个业务服务 + 18 个测试文件从 RedisUtil 迁移至 CacheOperations - manage-gateway 配置 caffeine 实现(无需 Redis),manage-app 配置 redis 实现 - 分布式锁等 Redis 独有特性保持直接使用 ReactiveRedisTemplate 测试:202 通过,0 失败,0 错误
This commit was merged in pull request #56.
This commit is contained in:
+7
-7
@@ -3,7 +3,7 @@ package cn.novalon.gym.manage.coachconfig.service;
|
||||
import cn.novalon.gym.manage.coachconfig.domain.CoachTimeRule;
|
||||
import cn.novalon.gym.manage.coachconfig.repository.ICoachTimeRuleRepository;
|
||||
import cn.novalon.gym.manage.common.constant.RedisKeyConstants;
|
||||
import cn.novalon.gym.manage.common.util.RedisUtil;
|
||||
import cn.novalon.gym.manage.common.cache.CacheOperations;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -43,11 +43,11 @@ public class CoachTimeRuleService {
|
||||
private static final long CACHE_TTL_SECONDS = 300;
|
||||
|
||||
private final ICoachTimeRuleRepository repository;
|
||||
private final RedisUtil redisUtil;
|
||||
private final CacheOperations cacheOperations;
|
||||
|
||||
public CoachTimeRuleService(ICoachTimeRuleRepository repository, RedisUtil redisUtil) {
|
||||
public CoachTimeRuleService(ICoachTimeRuleRepository repository, CacheOperations cacheOperations) {
|
||||
this.repository = repository;
|
||||
this.redisUtil = redisUtil;
|
||||
this.cacheOperations = cacheOperations;
|
||||
}
|
||||
|
||||
// ==================== 规则匹配 ====================
|
||||
@@ -118,7 +118,7 @@ public class CoachTimeRuleService {
|
||||
* 获取所有启用规则(带 Redis 缓存)
|
||||
*/
|
||||
private Flux<CoachTimeRule> getActiveRules() {
|
||||
return redisUtil.get(RedisKeyConstants.COACH_TIME_RULES)
|
||||
return cacheOperations.get(RedisKeyConstants.COACH_TIME_RULES)
|
||||
.flatMapMany(cached -> {
|
||||
@SuppressWarnings("unchecked")
|
||||
List<CoachTimeRule> list = (List<CoachTimeRule>) cached;
|
||||
@@ -130,7 +130,7 @@ public class CoachTimeRuleService {
|
||||
return repository.findByStatusAndDeletedAtIsNull("1")
|
||||
.collectList()
|
||||
.flatMapMany(list -> {
|
||||
redisUtil.setWithExpire(RedisKeyConstants.COACH_TIME_RULES, list, CACHE_TTL_SECONDS)
|
||||
cacheOperations.setWithExpire(RedisKeyConstants.COACH_TIME_RULES, list, CACHE_TTL_SECONDS)
|
||||
.subscribe(
|
||||
ok -> logger.debug("教练时间规则已写入 Redis 缓存,共 {} 条", list.size()),
|
||||
err -> logger.warn("教练时间规则写入 Redis 缓存失败: {}", err.getMessage())
|
||||
@@ -144,7 +144,7 @@ public class CoachTimeRuleService {
|
||||
* 写操作后清除缓存(热更新入口)
|
||||
*/
|
||||
private void invalidateCache() {
|
||||
redisUtil.delete(RedisKeyConstants.COACH_TIME_RULES)
|
||||
cacheOperations.delete(RedisKeyConstants.COACH_TIME_RULES)
|
||||
.subscribe(
|
||||
count -> logger.info("教练时间规则缓存已清除"),
|
||||
err -> logger.warn("教练时间规则缓存清除失败: {}", err.getMessage())
|
||||
|
||||
Reference in New Issue
Block a user