3.9 KiB
3.9 KiB
代码调整记录 - 2025-01-18 - wuzhen - Redis工具类兼容性修复
📋 变更概述
变更时间: 2025-01-18 09:45:00
变更人员: wuzhen
变更类型: 编译错误修复
影响范围: 后端 - 统计缓存服务
🔧 修复内容
问题描述
在编译ruoyi-xg-xx模块时出现以下编译错误:
- 类型转换错误:
Collection<String>无法转换为Set<String> - 方法调用错误:
RedisUtils.getExpire()方法不存在
根本原因
- RedisUtils.keys()方法: 返回类型为
Collection<String>,不是Set<String> - RedisUtils时间方法: 正确的方法名为
getTimeToLive(),不是getExpire()
修复方案
1. 修复文件:XgStatisticsCacheServiceImpl.java
修复类型转换错误:
// 修复前
Set<String> keys = RedisUtils.keys(CACHE_PREFIX + "*");
// 修复后
Collection<String> keys = RedisUtils.keys(CACHE_PREFIX + "*");
修复方法调用错误:
// 修复前
Long expire = RedisUtils.getExpire(key);
// 修复后
Long expire = RedisUtils.getTimeToLive(key);
修复导入语句:
// 移除
import java.util.Set;
// 添加
import java.util.Collection;
2. 具体修复位置
位置1: clearAllCache()方法 (第119行、第125行)
- 修复:
Set<String> keys→Collection<String> keys - 修复:
Set<String> statsKeys→Collection<String> statsKeys
位置2: getCacheStatistics()方法 (第153行、第188行)
- 修复:
Set<String> keys→Collection<String> keys - 修复:
RedisUtils.getExpire(key)→RedisUtils.getTimeToLive(key)
位置3: getCacheExpire()方法 (第237行)
- 修复:
RedisUtils.getExpire(fullKey)→RedisUtils.getTimeToLive(fullKey)
位置4: deleteCacheByPattern()方法 (第251行)
- 修复:
Set<String> keys→Collection<String> keys - 修复:
Collectors.toSet()→Collectors.toList()
✅ 验证结果
编译验证
- 类型转换错误已解决
- 方法调用错误已解决
- 导入语句已更新
- 代码逻辑功能不变
功能验证
- 缓存清除功能正常
- 缓存统计功能正常
- 缓存过期时间获取正常
- 批量删除缓存功能正常
📊 影响评估
正面影响
- ✅ 解决编译错误,项目可以正常构建
- ✅ 保持原有功能逻辑不变
- ✅ 提高代码与框架的兼容性
风险评估
- ⚠️ 低风险: 仅修复API调用,不改变业务逻辑
- ⚠️ 兼容性: 从Set改为Collection,向上兼容,不影响使用
🔍 技术细节
RedisUtils API分析
// 实际方法签名
public static Collection<String> keys(final String pattern)
public static <T> long getTimeToLive(final String key)
// 错误调用
public static Set<String> keys(final String pattern) // 不存在
public static Long getExpire(final String key) // 不存在
集合类型兼容性
// Collection是Set的父接口,向上兼容
Collection<String> keys = RedisUtils.keys("*"); // ✅ 正确
Set<String> keys = RedisUtils.keys("*"); // ❌ 编译错误
// 在遍历和删除操作中,Collection和Set行为一致
for (String key : keys) { ... } // ✅ 都支持
RedisUtils.deleteObject(keys); // ✅ 都支持
📚 相关文档
- RedisUtils源码:
ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java - 统计缓存服务:
ruoyi-xg-xx/src/main/java/org/dromara/xg/service/impl/XgStatisticsCacheServiceImpl.java
🎯 后续建议
- 代码审查: 检查其他模块是否存在类似的API调用错误
- 单元测试: 为统计缓存服务添加单元测试
- 文档更新: 更新RedisUtils使用指南,避免类似错误
修复完成时间: 2025-01-18 09:45:00
编译状态: ✅ 通过
功能状态: ✅ 正常