新增云协议设备实时数据功能

This commit is contained in:
xy
2025-09-04 14:00:15 +08:00
parent f88baa52be
commit 1a3e443be1
15 changed files with 398 additions and 150 deletions

View File

@@ -0,0 +1,68 @@
package com.njcn.access.utils;
import com.njcn.redis.utils.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
/**
* @author 徐扬
*/
@Component
@Slf4j
public class RedisSetUtil {
@Autowired
private RedisUtil redisUtil;
/**
* 向Redis Set中添加元素
*/
public void addToSet(String key, String value, long expireSeconds) {
try {
Object existing = redisUtil.getObjectByKey(key);
Set<String> set = convertToSet(existing);
set.add(value);
redisUtil.saveByKeyWithExpire(key, set, expireSeconds);
} catch (Exception e) {
log.error("向Redis Set添加元素失败key: {}", key, e);
}
}
/**
* 从Redis Set中移除元素
*/
public void removeFromSet(String key, String value) {
try {
Object existing = redisUtil.getObjectByKey(key);
if (existing != null) {
Set<String> set = convertToSet(existing);
set.remove(value);
redisUtil.saveByKey(key, set);
}
} catch (Exception e) {
log.error("从Redis Set移除元素失败key: {}", key, e);
}
}
/**
* 安全的对象到Set转换
*/
public Set<String> convertToSet(Object obj) {
if (obj == null) {
return new HashSet<>();
}
if (obj instanceof Set) {
return new HashSet<>((Set<String>) obj);
}
if (obj instanceof Collection) {
return new HashSet<>((Collection<String>) obj);
}
log.warn("无法转换的对象类型: {}", obj.getClass().getName());
return new HashSet<>();
}
}