提交 376cdb94 作者: obcy

【fix-自动拆箱引起的空指针】

上级 58b3f919
......@@ -867,7 +867,7 @@ public class SubjectServiceImpl extends ServiceImpl<SubjectMapper, Subject> impl
//防止重复
if (redisUtil.hasKey(Constants.HISTORY_SUBJECT_DATE_QUEUE + subject.getSubjectCode())) {
newDateList.forEach(e -> {
redisUtil.lRemove(Constants.HISTORY_SUBJECT_DATE_QUEUE + subject.getSubjectCode(), 1, e);
redisUtil.lRemove(Constants.HISTORY_SUBJECT_DATE_QUEUE + subject.getSubjectCode(), 0, e);
});
}
redisUtil.rpushMultipleValues(Constants.HISTORY_SUBJECT_DATE_QUEUE + subject.getSubjectCode(), newDateList.toArray(new String[0]));
......
package com.zzsn.event.util;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.RedisSystemException;
import org.springframework.data.redis.core.Cursor;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
......@@ -15,6 +17,7 @@ import java.util.concurrent.TimeUnit;
* redis 工具类
*/
@Component
@Slf4j
public class RedisUtil {
@Autowired
......@@ -533,18 +536,38 @@ public class RedisUtil {
}
/**
* 移除N个值为value
* 从 Redis 列表中移除与指定值匹配的元素
*
* @param key 键
* @param count 移除多少个
* @param value 值
* @return 移除的个数
* @param key Redis 列表的键
* @param count 移除方式:
* count > 0: 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT
* count < 0: 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值
* count = 0: 移除表中所有与 VALUE 相等的值
* @param value 要匹配的元素值
* @return 被移除元素的数量,若操作失败则返回 0
*/
public long lRemove(String key, long count, Object value) {
if (key == null || key.isEmpty()) {
log.error("移除列表元素失败,键不能为空");
return 0;
}
if (redisTemplate == null) {
log.error("RedisTemplate 未初始化,无法执行列表移除操作");
return 0;
}
try {
return redisTemplate.opsForList().remove(key, count, value);
Long result = redisTemplate.opsForList().remove(key, count, value);
return result != null ? result : 0;
} catch (RedisSystemException e) {
log.error("Redis 系统异常,移除列表元素失败。键: {}, 计数: {}, 值: {}", key, count, value, e);
return 0;
} catch (IllegalArgumentException e) {
log.error("非法参数异常,移除列表元素失败。键: {}, 计数: {}, 值: {}", key, count, value, e);
return 0;
} catch (Exception e) {
e.printStackTrace();
log.error("未知异常,移除列表元素失败。键: {}, 计数: {}, 值: {}", key, count, value, e);
return 0;
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论