update 优化 统一补全代码注释

This commit is contained in:
疯狂的狮子Li
2026-03-13 19:36:14 +08:00
parent 916282ba68
commit 48992b574d
201 changed files with 2554 additions and 465 deletions

View File

@@ -14,13 +14,21 @@ public class KeyPrefixHandler implements NameMapper {
private final String keyPrefix;
/**
* 创建 Redis Key 前缀处理器。
*
* @param keyPrefix Key 前缀
*/
public KeyPrefixHandler(String keyPrefix) {
//前缀为空 则返回空前缀
this.keyPrefix = StringUtils.isBlank(keyPrefix) ? "" : keyPrefix + ":";
}
/**
* 增加前缀
* 为原始 Key 增加前缀
*
* @param name 原始 Key
* @return 带前缀的 Key
*/
@Override
public String map(String name) {
@@ -34,7 +42,10 @@ public class KeyPrefixHandler implements NameMapper {
}
/**
* 去除前缀
* 去除 Key 前缀
*
* @param name 带前缀的 Key
* @return 原始 Key
*/
@Override
public String unmap(String name) {

View File

@@ -18,7 +18,11 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
public class RedisExceptionHandler {
/**
* 分布式锁Lock4j异常
* 处理 Lock4j 分布式锁获取失败异常
*
* @param e 异常信息
* @param request 当前请求
* @return 统一失败响应
*/
@ExceptionHandler(LockFailureException.class)
public R<Void> handleLockFailureException(LockFailureException e, HttpServletRequest request) {

View File

@@ -18,31 +18,66 @@ public class CaffeineCacheDecorator implements Cache {
private final String name;
private final Cache cache;
/**
* 创建带 Caffeine 一级缓存的缓存装饰器。
*
* @param name 缓存名称
* @param cache 被装饰的缓存实例
*/
public CaffeineCacheDecorator(String name, Cache cache) {
this.name = name;
this.cache = cache;
}
/**
* 获取缓存名称。
*
* @return 缓存名称
*/
@Override
public String getName() {
return name;
}
/**
* 获取底层原生缓存对象。
*
* @return 原生缓存对象
*/
@Override
public Object getNativeCache() {
return cache.getNativeCache();
}
/**
* 构造 Caffeine 一级缓存使用的唯一键。
*
* @param key 缓存键
* @return 唯一键
*/
public String getUniqueKey(Object key) {
return name + ":" + key;
}
/**
* 获取缓存值。
*
* @param key 缓存键
* @return 缓存值包装对象
*/
@Override
public ValueWrapper get(Object key) {
Object o = CAFFEINE.get(getUniqueKey(key), k -> cache.get(key));
return (ValueWrapper) o;
}
/**
* 按指定类型获取缓存值。
*
* @param key 缓存键
* @param type 值类型
* @return 缓存值
*/
@SuppressWarnings("unchecked")
@Override
public <T> T get(Object key, Class<T> type) {
@@ -50,23 +85,47 @@ public class CaffeineCacheDecorator implements Cache {
return (T) o;
}
/**
* 写入缓存值,并清理本地一级缓存。
*
* @param key 缓存键
* @param value 缓存值
*/
@Override
public void put(Object key, Object value) {
CAFFEINE.invalidate(getUniqueKey(key));
cache.put(key, value);
}
/**
* 当键不存在时写入缓存值。
*
* @param key 缓存键
* @param value 缓存值
* @return 原缓存值包装对象
*/
@Override
public ValueWrapper putIfAbsent(Object key, Object value) {
CAFFEINE.invalidate(getUniqueKey(key));
return cache.putIfAbsent(key, value);
}
/**
* 删除缓存值。
*
* @param key 缓存键
*/
@Override
public void evict(Object key) {
evictIfPresent(key);
}
/**
* 删除缓存值并返回是否删除成功。
*
* @param key 缓存键
* @return 是否删除成功
*/
@Override
public boolean evictIfPresent(Object key) {
boolean b = cache.evictIfPresent(key);
@@ -76,17 +135,32 @@ public class CaffeineCacheDecorator implements Cache {
return b;
}
/**
* 清空缓存。
*/
@Override
public void clear() {
CAFFEINE.invalidateAll();
cache.clear();
}
/**
* 使缓存整体失效。
*
* @return 是否失效成功
*/
@Override
public boolean invalidate() {
return cache.invalidate();
}
/**
* 获取缓存值,不存在时通过回调加载。
*
* @param key 缓存键
* @param valueLoader 回调加载器
* @return 缓存值
*/
@SuppressWarnings("unchecked")
@Override
public <T> T get(Object key, Callable<T> valueLoader) {

View File

@@ -56,7 +56,7 @@ public class PlusSpringCacheManager implements CacheManager {
ConcurrentMap<String, Cache> instanceMap = new ConcurrentHashMap<>();
/**
* Creates CacheManager supplied by Redisson instance
* 创建基于 Redisson 的缓存管理器。
*/
public PlusSpringCacheManager() {
}
@@ -113,10 +113,21 @@ public class PlusSpringCacheManager implements CacheManager {
this.configMap = (Map<String, CacheConfig>) config;
}
/**
* 创建默认缓存配置。
*
* @return 默认缓存配置
*/
protected CacheConfig createDefaultConfig() {
return new CacheConfig();
}
/**
* 按缓存名称获取缓存实例,并支持通过扩展参数动态设置 TTL、最大空闲时间和容量。
*
* @param name 缓存名称,支持 `cacheName#ttl#maxIdle#maxSize#local` 格式
* @return 缓存实例
*/
@Override
public Cache getCache(String name) {
// 重写 cacheName 支持多参数
@@ -158,6 +169,14 @@ public class PlusSpringCacheManager implements CacheManager {
return createMapCache(name, config, local);
}
/**
* 创建普通 Map 类型缓存。
*
* @param name 缓存名称
* @param config 缓存配置
* @param local 是否启用本地一级缓存
* @return 缓存实例
*/
private Cache createMap(String name, CacheConfig config, int local) {
RMap<Object, Object> map = RedisUtils.getClient().getMap(name);
@@ -175,6 +194,14 @@ public class PlusSpringCacheManager implements CacheManager {
return cache;
}
/**
* 创建带过期策略的 MapCache 类型缓存。
*
* @param name 缓存名称
* @param config 缓存配置
* @param local 是否启用本地一级缓存
* @return 缓存实例
*/
private Cache createMapCache(String name, CacheConfig config, int local) {
RMapCache<Object, Object> map = RedisUtils.getClient().getMapCache(name);
@@ -197,6 +224,11 @@ public class PlusSpringCacheManager implements CacheManager {
return cache;
}
/**
* 获取当前缓存名称集合。
*
* @return 缓存名称集合
*/
@Override
public Collection<String> getCacheNames() {
return Collections.unmodifiableSet(configMap.keySet());

View File

@@ -22,6 +22,7 @@ public class CacheUtils {
*
* @param cacheNames 缓存组名称
* @param key 缓存key
* @return 缓存值
*/
public static <T> T get(String cacheNames, Object key) {
Cache.ValueWrapper wrapper = CACHE_MANAGER.getCache(cacheNames).get(key);

View File

@@ -25,7 +25,9 @@ public class QueueUtils {
/**
* 获取客户端实例
* 获取 Redisson 客户端实例
*
* @return Redisson 客户端
*/
public static RedissonClient getClient() {
return CLIENT;
@@ -36,6 +38,7 @@ public class QueueUtils {
*
* @param queueName 队列名
* @param data 数据
* @return 是否添加成功
*/
public static <T> boolean addQueueObject(String queueName, T data) {
RBlockingQueue<T> queue = CLIENT.getBlockingQueue(queueName);
@@ -46,6 +49,7 @@ public class QueueUtils {
* 通用获取一个队列数据 没有数据返回 null(不支持延迟队列)
*
* @param queueName 队列名
* @return 队列数据
*/
public static <T> T getQueueObject(String queueName) {
RBlockingQueue<T> queue = CLIENT.getBlockingQueue(queueName);
@@ -53,7 +57,11 @@ public class QueueUtils {
}
/**
* 通用删除队列数据(不支持延迟队列)
* 删除普通队列中的指定数据。
*
* @param queueName 队列名
* @param data 数据
* @return 是否删除成功
*/
public static <T> boolean removeQueueObject(String queueName, T data) {
RBlockingQueue<T> queue = CLIENT.getBlockingQueue(queueName);
@@ -61,7 +69,10 @@ public class QueueUtils {
}
/**
* 通用销毁队列 所有阻塞监听 报错(不支持延迟队列)
* 销毁普通队列
*
* @param queueName 队列名
* @return 是否销毁成功
*/
public static <T> boolean destroyQueue(String queueName) {
RBlockingQueue<T> queue = CLIENT.getBlockingQueue(queueName);
@@ -73,6 +84,7 @@ public class QueueUtils {
*
* @param queueName 队列名
* @param data 数据
* @return 是否添加成功
*/
public static <T> boolean addPriorityQueueObject(String queueName, T data) {
RPriorityBlockingQueue<T> priorityBlockingQueue = CLIENT.getPriorityBlockingQueue(queueName);
@@ -83,6 +95,7 @@ public class QueueUtils {
* 优先队列获取一个队列数据 没有数据返回 null(不支持延迟队列)
*
* @param queueName 队列名
* @return 队列数据
*/
public static <T> T getPriorityQueueObject(String queueName) {
RPriorityBlockingQueue<T> queue = CLIENT.getPriorityBlockingQueue(queueName);
@@ -90,7 +103,11 @@ public class QueueUtils {
}
/**
* 优先队列删除队列数据(不支持延迟队列)
* 删除优先队列中的指定数据。
*
* @param queueName 队列名
* @param data 数据
* @return 是否删除成功
*/
public static <T> boolean removePriorityQueueObject(String queueName, T data) {
RPriorityBlockingQueue<T> queue = CLIENT.getPriorityBlockingQueue(queueName);
@@ -98,7 +115,10 @@ public class QueueUtils {
}
/**
* 优先队列销毁队列 所有阻塞监听 报错(不支持延迟队列)
* 销毁优先队列
*
* @param queueName 队列名
* @return 是否销毁成功
*/
public static <T> boolean destroyPriorityQueue(String queueName) {
RPriorityBlockingQueue<T> queue = CLIENT.getPriorityBlockingQueue(queueName);
@@ -106,7 +126,10 @@ public class QueueUtils {
}
/**
* 订阅阻塞队列(可订阅所有实现类)
* 订阅阻塞队列元素。
*
* @param queueName 队列名
* @param consumer 消费逻辑
*/
public static <T> void subscribeBlockingQueue(String queueName, Function<T, CompletionStage<Void>> consumer) {
RBlockingQueue<T> queue = CLIENT.getBlockingQueue(queueName);

View File

@@ -546,6 +546,7 @@ public class RedisUtils {
/**
* 通过扫描参数获取缓存的基本对象列表
*
* @param keysScanOptions 扫描参数
* <P>
* limit-设置扫描的限制数量(默认为0,查询全部)
@@ -554,6 +555,7 @@ public class RedisUtils {
* type-设置键的类型(默认为null,查询全部类型)
* </P>
* @see KeysScanOptions
* @return 对象列表
*/
public static Collection<String> keys(final KeysScanOptions keysScanOptions) {
Stream<String> keysStream = CLIENT.getKeys().getKeysStream(keysScanOptions);
@@ -573,6 +575,7 @@ public class RedisUtils {
* 检查redis中是否存在key
*
* @param key 键
* @return 是否存在
*/
public static Boolean hasKey(String key) {
RKeys rKeys = CLIENT.getKeys();