启动时清理无效的设备缓存数据,避免设备无法注册
This commit is contained in:
parent
81da03d981
commit
bdc0f83e29
@ -69,6 +69,26 @@ public class SipRunner implements CommandLineRunner {
|
|||||||
// 重置cseq计数
|
// 重置cseq计数
|
||||||
redisCatchStorage.resetAllCSEQ();
|
redisCatchStorage.resetAllCSEQ();
|
||||||
// 清理redis
|
// 清理redis
|
||||||
|
// 清理数据库不存在但是redis中存在的数据
|
||||||
|
List<Device> devicesInDb = deviceService.getAll();
|
||||||
|
if (devicesInDb.size() == 0) {
|
||||||
|
redisCatchStorage.removeAllDevice();
|
||||||
|
}else {
|
||||||
|
List<Device> devicesInRedis = redisCatchStorage.getAllDevices();
|
||||||
|
if (devicesInRedis.size() > 0) {
|
||||||
|
Map<String, Device> deviceMapInDb = new HashMap<>();
|
||||||
|
devicesInDb.parallelStream().forEach(device -> {
|
||||||
|
deviceMapInDb.put(device.getDeviceId(), device);
|
||||||
|
});
|
||||||
|
devicesInRedis.parallelStream().forEach(device -> {
|
||||||
|
if (deviceMapInDb.get(device.getDeviceId()) == null) {
|
||||||
|
redisCatchStorage.removeDevice(device.getDeviceId());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// 查找国标推流
|
// 查找国标推流
|
||||||
List<SendRtpItem> sendRtpItems = redisCatchStorage.queryAllSendRTPServer();
|
List<SendRtpItem> sendRtpItems = redisCatchStorage.queryAllSendRTPServer();
|
||||||
if (sendRtpItems.size() > 0) {
|
if (sendRtpItems.size() > 0) {
|
||||||
|
@ -163,4 +163,8 @@ public interface IDeviceService {
|
|||||||
*/
|
*/
|
||||||
ResourceBaceInfo getOverview();
|
ResourceBaceInfo getOverview();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取所有设备
|
||||||
|
*/
|
||||||
|
List<Device> getAll();
|
||||||
}
|
}
|
||||||
|
@ -631,4 +631,9 @@ public class DeviceServiceImpl implements IDeviceService {
|
|||||||
public ResourceBaceInfo getOverview() {
|
public ResourceBaceInfo getOverview() {
|
||||||
return deviceMapper.getOverview();
|
return deviceMapper.getOverview();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Device> getAll() {
|
||||||
|
return deviceMapper.getAll();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -258,4 +258,7 @@ public interface IRedisCatchStorage {
|
|||||||
|
|
||||||
List<SendRtpItem> queryAllSendRTPServer();
|
List<SendRtpItem> queryAllSendRTPServer();
|
||||||
|
|
||||||
|
List<Device> getAllDevices();
|
||||||
|
|
||||||
|
void removeAllDevice();
|
||||||
}
|
}
|
||||||
|
@ -280,4 +280,6 @@ public interface DeviceMapper {
|
|||||||
@Select("select count(1) as total, sum(online) as online from device")
|
@Select("select count(1) as total, sum(online) as online from device")
|
||||||
ResourceBaceInfo getOverview();
|
ResourceBaceInfo getOverview();
|
||||||
|
|
||||||
|
@Select("select * from device")
|
||||||
|
List<Device> getAll();
|
||||||
}
|
}
|
||||||
|
@ -664,6 +664,31 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
|
|||||||
RedisUtil.del(key);
|
RedisUtil.del(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void removeAllDevice() {
|
||||||
|
String scanKey = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_*";
|
||||||
|
List<Object> keys = RedisUtil.scan(scanKey);
|
||||||
|
for (Object key : keys) {
|
||||||
|
RedisUtil.del((String) key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Device> getAllDevices() {
|
||||||
|
String scanKey = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_*";
|
||||||
|
List<Device> result = new ArrayList<>();
|
||||||
|
List<Object> keys = RedisUtil.scan(scanKey);
|
||||||
|
for (Object o : keys) {
|
||||||
|
String key = (String) o;
|
||||||
|
Device device = JsonUtil.redisJsonToObject(key, Device.class);
|
||||||
|
if (Objects.nonNull(device)) { // 只取没有存过得
|
||||||
|
result.add(JsonUtil.redisJsonToObject(key, Device.class));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Device getDevice(String deviceId) {
|
public Device getDevice(String deviceId) {
|
||||||
String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + deviceId;
|
String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + deviceId;
|
||||||
|
Loading…
Reference in New Issue
Block a user