invite消息缓存字符间隔改为使用:代替_,避免scan查询失败

This commit is contained in:
648540858 2023-08-04 17:53:12 +08:00
parent d099daeb31
commit 97800b2610

View File

@ -77,10 +77,10 @@ public class InviteStreamServiceImpl implements IInviteStreamService {
} }
String key = VideoManagerConstants.INVITE_PREFIX + String key = VideoManagerConstants.INVITE_PREFIX +
"_" + inviteInfoForUpdate.getType() + ":" + inviteInfoForUpdate.getType() +
"_" + inviteInfoForUpdate.getDeviceId() + ":" + inviteInfoForUpdate.getDeviceId() +
"_" + inviteInfoForUpdate.getChannelId() + ":" + inviteInfoForUpdate.getChannelId() +
"_" + inviteInfoForUpdate.getStream(); ":" + inviteInfoForUpdate.getStream();
redisTemplate.opsForValue().set(key, inviteInfoForUpdate); redisTemplate.opsForValue().set(key, inviteInfoForUpdate);
} }
@ -93,10 +93,10 @@ public class InviteStreamServiceImpl implements IInviteStreamService {
} }
removeInviteInfo(inviteInfoInDb); removeInviteInfo(inviteInfoInDb);
String key = VideoManagerConstants.INVITE_PREFIX + String key = VideoManagerConstants.INVITE_PREFIX +
"_" + inviteInfo.getType() + ":" + inviteInfo.getType() +
"_" + inviteInfo.getDeviceId() + ":" + inviteInfo.getDeviceId() +
"_" + inviteInfo.getChannelId() + ":" + inviteInfo.getChannelId() +
"_" + stream; ":" + stream;
inviteInfoInDb.setStream(stream); inviteInfoInDb.setStream(stream);
if (inviteInfoInDb.getSsrcInfo() != null) { if (inviteInfoInDb.getSsrcInfo() != null) {
inviteInfoInDb.getSsrcInfo().setStream(stream); inviteInfoInDb.getSsrcInfo().setStream(stream);
@ -108,10 +108,10 @@ public class InviteStreamServiceImpl implements IInviteStreamService {
@Override @Override
public InviteInfo getInviteInfo(InviteSessionType type, String deviceId, String channelId, String stream) { public InviteInfo getInviteInfo(InviteSessionType type, String deviceId, String channelId, String stream) {
String key = VideoManagerConstants.INVITE_PREFIX + String key = VideoManagerConstants.INVITE_PREFIX +
"_" + (type != null ? type : "*") + ":" + (type != null ? type : "*") +
"_" + (deviceId != null ? deviceId : "*") + ":" + (deviceId != null ? deviceId : "*") +
"_" + (channelId != null ? channelId : "*") + ":" + (channelId != null ? channelId : "*") +
"_" + (stream != null ? stream : "*"); ":" + (stream != null ? stream : "*");
List<Object> scanResult = RedisUtil.scan(redisTemplate, key); List<Object> scanResult = RedisUtil.scan(redisTemplate, key);
if (scanResult.size() != 1) { if (scanResult.size() != 1) {
return null; return null;
@ -133,10 +133,10 @@ public class InviteStreamServiceImpl implements IInviteStreamService {
@Override @Override
public void removeInviteInfo(InviteSessionType type, String deviceId, String channelId, String stream) { public void removeInviteInfo(InviteSessionType type, String deviceId, String channelId, String stream) {
String scanKey = VideoManagerConstants.INVITE_PREFIX + String scanKey = VideoManagerConstants.INVITE_PREFIX +
"_" + (type != null ? type : "*") + ":" + (type != null ? type : "*") +
"_" + (deviceId != null ? deviceId : "*") + ":" + (deviceId != null ? deviceId : "*") +
"_" + (channelId != null ? channelId : "*") + ":" + (channelId != null ? channelId : "*") +
"_" + (stream != null ? stream : "*"); ":" + (stream != null ? stream : "*");
List<Object> scanResult = RedisUtil.scan(redisTemplate, scanKey); List<Object> scanResult = RedisUtil.scan(redisTemplate, scanKey);
if (scanResult.size() > 0) { if (scanResult.size() > 0) {
for (Object keyObj : scanResult) { for (Object keyObj : scanResult) {
@ -174,10 +174,10 @@ public class InviteStreamServiceImpl implements IInviteStreamService {
} }
private String buildKey(InviteSessionType type, String deviceId, String channelId, String stream) { private String buildKey(InviteSessionType type, String deviceId, String channelId, String stream) {
String key = type + "_" + deviceId + "_" + channelId; String key = type + ":" + deviceId + ":" + channelId;
// 如果ssrc未null那么可以实现一个通道只能一次操作ssrc不为null则可以支持一个通道多次invite // 如果ssrc未null那么可以实现一个通道只能一次操作ssrc不为null则可以支持一个通道多次invite
if (stream != null) { if (stream != null) {
key += ("_" + stream); key += (":" + stream);
} }
return key; return key;
} }
@ -191,7 +191,7 @@ public class InviteStreamServiceImpl implements IInviteStreamService {
@Override @Override
public int getStreamInfoCount(String mediaServerId) { public int getStreamInfoCount(String mediaServerId) {
int count = 0; int count = 0;
String key = VideoManagerConstants.INVITE_PREFIX + "_*_*_*_*"; String key = VideoManagerConstants.INVITE_PREFIX + ":*:*:*:*";
List<Object> scanResult = RedisUtil.scan(redisTemplate, key); List<Object> scanResult = RedisUtil.scan(redisTemplate, key);
if (scanResult.size() == 0) { if (scanResult.size() == 0) {
return 0; return 0;
@ -222,10 +222,10 @@ public class InviteStreamServiceImpl implements IInviteStreamService {
private String buildSubStreamKey(InviteSessionType type, String deviceId, String channelId, String stream) { private String buildSubStreamKey(InviteSessionType type, String deviceId, String channelId, String stream) {
String key = type + "_" + "_" + deviceId + "_" + channelId; String key = type + ":" + ":" + deviceId + ":" + channelId;
// 如果ssrc为null那么可以实现一个通道只能一次操作ssrc不为null则可以支持一个通道多次invite // 如果ssrc为null那么可以实现一个通道只能一次操作ssrc不为null则可以支持一个通道多次invite
if (stream != null) { if (stream != null) {
key += ("_" + stream); key += (":" + stream);
} }
return key; return key;
} }