Commit 4f2d47385d3535edf73634831c56f7fc18ff3494

Authored by 648540858
1 parent 053cd130

去除redis工具类直接使用RedisTemplate存取数据

src/main/java/com/genersoft/iot/vmp/conf/redis/RedisConfig.java
1 package com.genersoft.iot.vmp.conf.redis; 1 package com.genersoft.iot.vmp.conf.redis;
2 2
3 3
4 -import com.genersoft.iot.vmp.common.VideoManagerConstants;  
5 -import com.genersoft.iot.vmp.service.redisMsg.*;  
6 -import org.springframework.beans.factory.annotation.Autowired;  
7 -import org.springframework.cache.annotation.CachingConfigurerSupport; 4 +import com.alibaba.fastjson2.support.spring.data.redis.GenericFastJsonRedisSerializer;
8 import org.springframework.context.annotation.Bean; 5 import org.springframework.context.annotation.Bean;
9 import org.springframework.context.annotation.Configuration; 6 import org.springframework.context.annotation.Configuration;
10 import org.springframework.core.annotation.Order; 7 import org.springframework.core.annotation.Order;
11 import org.springframework.data.redis.connection.RedisConnectionFactory; 8 import org.springframework.data.redis.connection.RedisConnectionFactory;
12 import org.springframework.data.redis.core.RedisTemplate; 9 import org.springframework.data.redis.core.RedisTemplate;
13 -import org.springframework.data.redis.listener.PatternTopic;  
14 -import org.springframework.data.redis.listener.RedisMessageListenerContainer;  
15 import org.springframework.data.redis.serializer.StringRedisSerializer; 10 import org.springframework.data.redis.serializer.StringRedisSerializer;
16 11
17 -import com.genersoft.iot.vmp.utils.redis.FastJsonRedisSerializer;  
18 -  
19 12
20 /** 13 /**
21 - * @description:Redis中间件配置类,使用spring-data-redis集成,自动从application.yml中加载redis配置  
22 - * @author: swwheihei  
23 - * @date: 2019年5月30日 上午10:58:25 14 + * Redis中间件配置类,使用spring-data-redis集成,自动从application.yml中加载redis配置
  15 + * swwheihei
  16 + * 2019年5月30日 上午10:58:25
24 * 17 *
25 */ 18 */
26 @Configuration 19 @Configuration
27 @Order(value=1) 20 @Order(value=1)
28 -public class RedisConfig extends CachingConfigurerSupport {  
29 -  
30 - @Autowired  
31 - private RedisGpsMsgListener redisGPSMsgListener;  
32 -  
33 - @Autowired  
34 - private RedisAlarmMsgListener redisAlarmMsgListener;  
35 -  
36 - @Autowired  
37 - private RedisStreamMsgListener redisStreamMsgListener;  
38 -  
39 - @Autowired  
40 - private RedisGbPlayMsgListener redisGbPlayMsgListener;  
41 -  
42 - @Autowired  
43 - private RedisPushStreamStatusMsgListener redisPushStreamStatusMsgListener; 21 +public class RedisConfig {
44 22
45 - @Autowired  
46 - private RedisPushStreamStatusListMsgListener redisPushStreamListMsgListener;  
47 -  
48 - @Autowired  
49 - private RedisPushStreamResponseListener redisPushStreamResponseListener;  
50 23
51 @Bean 24 @Bean
52 public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) { 25 public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
53 RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>(); 26 RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
54 // 使用fastJson序列化 27 // 使用fastJson序列化
55 - FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class); 28 + GenericFastJsonRedisSerializer fastJsonRedisSerializer = new GenericFastJsonRedisSerializer();
56 // value值的序列化采用fastJsonRedisSerializer 29 // value值的序列化采用fastJsonRedisSerializer
57 redisTemplate.setValueSerializer(fastJsonRedisSerializer); 30 redisTemplate.setValueSerializer(fastJsonRedisSerializer);
58 redisTemplate.setHashValueSerializer(fastJsonRedisSerializer); 31 redisTemplate.setHashValueSerializer(fastJsonRedisSerializer);
@@ -63,27 +36,4 @@ public class RedisConfig extends CachingConfigurerSupport { @@ -63,27 +36,4 @@ public class RedisConfig extends CachingConfigurerSupport {
63 redisTemplate.setConnectionFactory(redisConnectionFactory); 36 redisTemplate.setConnectionFactory(redisConnectionFactory);
64 return redisTemplate; 37 return redisTemplate;
65 } 38 }
66 -  
67 -  
68 - /**  
69 - * redis消息监听器容器 可以添加多个监听不同话题的redis监听器,只需要把消息监听器和相应的消息订阅处理器绑定,该消息监听器  
70 - * 通过反射技术调用消息订阅处理器的相关方法进行一些业务处理  
71 - *  
72 - * @param connectionFactory  
73 - * @return  
74 - */  
75 - @Bean  
76 - RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {  
77 -  
78 - RedisMessageListenerContainer container = new RedisMessageListenerContainer();  
79 - container.setConnectionFactory(connectionFactory);  
80 - container.addMessageListener(redisGPSMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_GPS));  
81 - container.addMessageListener(redisAlarmMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_SUBSCRIBE_ALARM_RECEIVE));  
82 - container.addMessageListener(redisStreamMsgListener, new PatternTopic(VideoManagerConstants.WVP_MSG_STREAM_CHANGE_PREFIX + "PUSH"));  
83 - container.addMessageListener(redisGbPlayMsgListener, new PatternTopic(RedisGbPlayMsgListener.WVP_PUSH_STREAM_KEY));  
84 - container.addMessageListener(redisPushStreamStatusMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_PUSH_STREAM_STATUS_CHANGE));  
85 - container.addMessageListener(redisPushStreamListMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_PUSH_STREAM_LIST_CHANGE));  
86 - container.addMessageListener(redisPushStreamResponseListener, new PatternTopic(VideoManagerConstants.VM_MSG_STREAM_PUSH_RESPONSE));  
87 - return container;  
88 - }  
89 } 39 }
src/main/java/com/genersoft/iot/vmp/conf/redis/RedisMsgListenConfig.java 0 → 100644
  1 +package com.genersoft.iot.vmp.conf.redis;
  2 +
  3 +
  4 +import com.genersoft.iot.vmp.common.VideoManagerConstants;
  5 +import com.genersoft.iot.vmp.service.redisMsg.*;
  6 +import org.springframework.beans.factory.annotation.Autowired;
  7 +import org.springframework.context.annotation.Bean;
  8 +import org.springframework.context.annotation.Configuration;
  9 +import org.springframework.core.annotation.Order;
  10 +import org.springframework.data.redis.connection.RedisConnectionFactory;
  11 +import org.springframework.data.redis.listener.PatternTopic;
  12 +import org.springframework.data.redis.listener.RedisMessageListenerContainer;
  13 +
  14 +
  15 +/**
  16 + * @description:Redis中间件配置类,使用spring-data-redis集成,自动从application.yml中加载redis配置
  17 + * @author: swwheihei
  18 + * @date: 2019年5月30日 上午10:58:25
  19 + *
  20 + */
  21 +@Configuration
  22 +@Order(value=1)
  23 +public class RedisMsgListenConfig {
  24 +
  25 + @Autowired
  26 + private RedisGpsMsgListener redisGPSMsgListener;
  27 +
  28 + @Autowired
  29 + private RedisAlarmMsgListener redisAlarmMsgListener;
  30 +
  31 + @Autowired
  32 + private RedisStreamMsgListener redisStreamMsgListener;
  33 +
  34 + @Autowired
  35 + private RedisGbPlayMsgListener redisGbPlayMsgListener;
  36 +
  37 + @Autowired
  38 + private RedisPushStreamStatusMsgListener redisPushStreamStatusMsgListener;
  39 +
  40 + @Autowired
  41 + private RedisPushStreamStatusListMsgListener redisPushStreamListMsgListener;
  42 +
  43 + @Autowired
  44 + private RedisPushStreamResponseListener redisPushStreamResponseListener;
  45 +
  46 +
  47 + /**
  48 + * redis消息监听器容器 可以添加多个监听不同话题的redis监听器,只需要把消息监听器和相应的消息订阅处理器绑定,该消息监听器
  49 + * 通过反射技术调用消息订阅处理器的相关方法进行一些业务处理
  50 + *
  51 + * @param connectionFactory
  52 + * @return
  53 + */
  54 + @Bean
  55 + RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
  56 +
  57 + RedisMessageListenerContainer container = new RedisMessageListenerContainer();
  58 + container.setConnectionFactory(connectionFactory);
  59 + container.addMessageListener(redisGPSMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_GPS));
  60 + container.addMessageListener(redisAlarmMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_SUBSCRIBE_ALARM_RECEIVE));
  61 + container.addMessageListener(redisStreamMsgListener, new PatternTopic(VideoManagerConstants.WVP_MSG_STREAM_CHANGE_PREFIX + "PUSH"));
  62 + container.addMessageListener(redisGbPlayMsgListener, new PatternTopic(RedisGbPlayMsgListener.WVP_PUSH_STREAM_KEY));
  63 + container.addMessageListener(redisPushStreamStatusMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_PUSH_STREAM_STATUS_CHANGE));
  64 + container.addMessageListener(redisPushStreamListMsgListener, new PatternTopic(VideoManagerConstants.VM_MSG_PUSH_STREAM_LIST_CHANGE));
  65 + container.addMessageListener(redisPushStreamResponseListener, new PatternTopic(VideoManagerConstants.VM_MSG_STREAM_PUSH_RESPONSE));
  66 + return container;
  67 + }
  68 +}
src/main/java/com/genersoft/iot/vmp/conf/security/WebSecurityConfig.java
@@ -72,22 +72,23 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @@ -72,22 +72,23 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
72 **/ 72 **/
73 @Override 73 @Override
74 public void configure(WebSecurity web) { 74 public void configure(WebSecurity web) {
75 -  
76 - ArrayList<String> matchers = new ArrayList<>();  
77 - matchers.add("/");  
78 - matchers.add("/#/**");  
79 - matchers.add("/static/**");  
80 - matchers.add("/index.html");  
81 - matchers.add("/doc.html");  
82 - matchers.add("/webjars/**");  
83 - matchers.add("/swagger-resources/**");  
84 - matchers.add("/v3/api-docs/**");  
85 - matchers.add("/js/**");  
86 - matchers.add("/api/device/query/snap/**");  
87 - matchers.add("/record_proxy/*/**");  
88 - matchers.addAll(userSetting.getInterfaceAuthenticationExcludes());  
89 - // 可以直接访问的静态数据  
90 - web.ignoring().antMatchers(matchers.toArray(new String[0])); 75 + if (userSetting.isInterfaceAuthentication()) {
  76 + ArrayList<String> matchers = new ArrayList<>();
  77 + matchers.add("/");
  78 + matchers.add("/#/**");
  79 + matchers.add("/static/**");
  80 + matchers.add("/index.html");
  81 + matchers.add("/doc.html");
  82 + matchers.add("/webjars/**");
  83 + matchers.add("/swagger-resources/**");
  84 + matchers.add("/v3/api-docs/**");
  85 + matchers.add("/js/**");
  86 + matchers.add("/api/device/query/snap/**");
  87 + matchers.add("/record_proxy/*/**");
  88 + matchers.addAll(userSetting.getInterfaceAuthenticationExcludes());
  89 + // 可以直接访问的静态数据
  90 + web.ignoring().antMatchers(matchers.toArray(new String[0]));
  91 + }
91 } 92 }
92 93
93 /** 94 /**
src/main/java/com/genersoft/iot/vmp/gb28181/session/VideoStreamSessionManager.java
@@ -8,16 +8,15 @@ import com.genersoft.iot.vmp.utils.JsonUtil; @@ -8,16 +8,15 @@ import com.genersoft.iot.vmp.utils.JsonUtil;
8 import com.genersoft.iot.vmp.utils.redis.RedisUtil; 8 import com.genersoft.iot.vmp.utils.redis.RedisUtil;
9 import gov.nist.javax.sip.message.SIPResponse; 9 import gov.nist.javax.sip.message.SIPResponse;
10 import org.springframework.beans.factory.annotation.Autowired; 10 import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.data.redis.core.RedisTemplate;
11 import org.springframework.stereotype.Component; 12 import org.springframework.stereotype.Component;
12 import org.springframework.util.ObjectUtils; 13 import org.springframework.util.ObjectUtils;
13 14
14 import java.util.ArrayList; 15 import java.util.ArrayList;
15 import java.util.List; 16 import java.util.List;
16 17
17 -/**  
18 - * @description:视频流session管理器,管理视频预览、预览回放的通信句柄  
19 - * @author: swwheihei  
20 - * @date: 2020年5月13日 下午4:03:02 18 +/**
  19 + * 视频流session管理器,管理视频预览、预览回放的通信句柄
21 */ 20 */
22 @Component 21 @Component
23 public class VideoStreamSessionManager { 22 public class VideoStreamSessionManager {
@@ -25,6 +24,9 @@ public class VideoStreamSessionManager { @@ -25,6 +24,9 @@ public class VideoStreamSessionManager {
25 @Autowired 24 @Autowired
26 private UserSetting userSetting; 25 private UserSetting userSetting;
27 26
  27 + @Autowired
  28 + private RedisTemplate<Object, Object> redisTemplate;
  29 +
28 public enum SessionType { 30 public enum SessionType {
29 play, 31 play,
30 playback, 32 playback,
@@ -52,7 +54,7 @@ public class VideoStreamSessionManager { @@ -52,7 +54,7 @@ public class VideoStreamSessionManager {
52 ssrcTransaction.setMediaServerId(mediaServerId); 54 ssrcTransaction.setMediaServerId(mediaServerId);
53 ssrcTransaction.setType(type); 55 ssrcTransaction.setType(type);
54 56
55 - RedisUtil.set(VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() 57 + redisTemplate.opsForValue().set(VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId()
56 + "_" + deviceId + "_" + channelId + "_" + callId + "_" + stream, ssrcTransaction); 58 + "_" + deviceId + "_" + channelId + "_" + callId + "_" + stream, ssrcTransaction);
57 } 59 }
58 60
@@ -71,11 +73,11 @@ public class VideoStreamSessionManager { @@ -71,11 +73,11 @@ public class VideoStreamSessionManager {
71 stream ="*"; 73 stream ="*";
72 } 74 }
73 String key = VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_" + deviceId + "_" + channelId + "_" + callId+ "_" + stream; 75 String key = VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_" + deviceId + "_" + channelId + "_" + callId+ "_" + stream;
74 - List<Object> scanResult = RedisUtil.scan(key); 76 + List<Object> scanResult = RedisUtil.scan(redisTemplate, key);
75 if (scanResult.size() == 0) { 77 if (scanResult.size() == 0) {
76 return null; 78 return null;
77 } 79 }
78 - return (SsrcTransaction)RedisUtil.get((String) scanResult.get(0)); 80 + return (SsrcTransaction)redisTemplate.opsForValue().get(scanResult.get(0));
79 } 81 }
80 82
81 public List<SsrcTransaction> getSsrcTransactionForAll(String deviceId, String channelId, String callId, String stream){ 83 public List<SsrcTransaction> getSsrcTransactionForAll(String deviceId, String channelId, String callId, String stream){
@@ -92,13 +94,13 @@ public class VideoStreamSessionManager { @@ -92,13 +94,13 @@ public class VideoStreamSessionManager {
92 stream ="*"; 94 stream ="*";
93 } 95 }
94 String key = VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_" + deviceId + "_" + channelId + "_" + callId+ "_" + stream; 96 String key = VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_" + deviceId + "_" + channelId + "_" + callId+ "_" + stream;
95 - List<Object> scanResult = RedisUtil.scan(key); 97 + List<Object> scanResult = RedisUtil.scan(redisTemplate, key);
96 if (scanResult.size() == 0) { 98 if (scanResult.size() == 0) {
97 return null; 99 return null;
98 } 100 }
99 List<SsrcTransaction> result = new ArrayList<>(); 101 List<SsrcTransaction> result = new ArrayList<>();
100 for (Object keyObj : scanResult) { 102 for (Object keyObj : scanResult) {
101 - result.add((SsrcTransaction)RedisUtil.get((String) keyObj)); 103 + result.add((SsrcTransaction)redisTemplate.opsForValue().get(keyObj));
102 } 104 }
103 return result; 105 return result;
104 } 106 }
@@ -124,17 +126,17 @@ public class VideoStreamSessionManager { @@ -124,17 +126,17 @@ public class VideoStreamSessionManager {
124 if (ssrcTransaction == null) { 126 if (ssrcTransaction == null) {
125 return; 127 return;
126 } 128 }
127 - RedisUtil.del(VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_" 129 + redisTemplate.delete(VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX + userSetting.getServerId() + "_"
128 + deviceId + "_" + channelId + "_" + ssrcTransaction.getCallId() + "_" + ssrcTransaction.getStream()); 130 + deviceId + "_" + channelId + "_" + ssrcTransaction.getCallId() + "_" + ssrcTransaction.getStream());
129 } 131 }
130 132
131 133
132 public List<SsrcTransaction> getAllSsrc() { 134 public List<SsrcTransaction> getAllSsrc() {
133 - List<Object> ssrcTransactionKeys = RedisUtil.scan(String.format("%s_*_*_*_*", VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX+ userSetting.getServerId())); 135 + List<Object> ssrcTransactionKeys = RedisUtil.scan(redisTemplate, String.format("%s_*_*_*_*", VideoManagerConstants.MEDIA_TRANSACTION_USED_PREFIX+ userSetting.getServerId()));
134 List<SsrcTransaction> result= new ArrayList<>(); 136 List<SsrcTransaction> result= new ArrayList<>();
135 - for (int i = 0; i < ssrcTransactionKeys.size(); i++) {  
136 - String key = (String)ssrcTransactionKeys.get(i);  
137 - SsrcTransaction ssrcTransaction = JsonUtil.redisJsonToObject(key, SsrcTransaction.class); 137 + for (Object ssrcTransactionKey : ssrcTransactionKeys) {
  138 + String key = (String) ssrcTransactionKey;
  139 + SsrcTransaction ssrcTransaction = JsonUtil.redisJsonToObject(redisTemplate, key, SsrcTransaction.class);
138 result.add(ssrcTransaction); 140 result.add(ssrcTransaction);
139 } 141 }
140 return result; 142 return result;
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/ISIPCommanderForPlatform.java
@@ -20,7 +20,7 @@ public interface ISIPCommanderForPlatform { @@ -20,7 +20,7 @@ public interface ISIPCommanderForPlatform {
20 void register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException; 20 void register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException;
21 21
22 void register(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException; 22 void register(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException;
23 - void register(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, WWWAuthenticateHeader www, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) throws SipException, InvalidArgumentException, ParseException; 23 + void register(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, WWWAuthenticateHeader www, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean isRegister) throws SipException, InvalidArgumentException, ParseException;
24 24
25 /** 25 /**
26 * 向上级平台注销 26 * 向上级平台注销
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/SIPRequestHeaderPlarformProvider.java
@@ -45,7 +45,7 @@ public class SIPRequestHeaderPlarformProvider { @@ -45,7 +45,7 @@ public class SIPRequestHeaderPlarformProvider {
45 @Autowired 45 @Autowired
46 private IRedisCatchStorage redisCatchStorage; 46 private IRedisCatchStorage redisCatchStorage;
47 47
48 - public Request createRegisterRequest(@NotNull ParentPlatform parentPlatform, long CSeq, String fromTag, String toTag, CallIdHeader callIdHeader, boolean isRegister) throws ParseException, InvalidArgumentException, PeerUnavailableException { 48 + public Request createRegisterRequest(@NotNull ParentPlatform parentPlatform, long CSeq, String fromTag, String toTag, CallIdHeader callIdHeader, int expires) throws ParseException, InvalidArgumentException, PeerUnavailableException {
49 Request request = null; 49 Request request = null;
50 String sipAddress = parentPlatform.getDeviceIp() + ":" + parentPlatform.getDevicePort(); 50 String sipAddress = parentPlatform.getDeviceIp() + ":" + parentPlatform.getDevicePort();
51 //请求行 51 //请求行
@@ -78,8 +78,8 @@ public class SIPRequestHeaderPlarformProvider { @@ -78,8 +78,8 @@ public class SIPRequestHeaderPlarformProvider {
78 .createSipURI(parentPlatform.getDeviceGBId(), sipAddress)); 78 .createSipURI(parentPlatform.getDeviceGBId(), sipAddress));
79 request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress)); 79 request.addHeader(sipLayer.getSipFactory().createHeaderFactory().createContactHeader(concatAddress));
80 80
81 - ExpiresHeader expires = sipLayer.getSipFactory().createHeaderFactory().createExpiresHeader(isRegister ? parentPlatform.getExpires() : 0);  
82 - request.addHeader(expires); 81 + ExpiresHeader expiresHeader = sipLayer.getSipFactory().createHeaderFactory().createExpiresHeader(expires);
  82 + request.addHeader(expiresHeader);
83 83
84 request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil)); 84 request.addHeader(SipUtils.createUserAgentHeader(sipLayer.getSipFactory(), gitUtil));
85 85
@@ -87,10 +87,10 @@ public class SIPRequestHeaderPlarformProvider { @@ -87,10 +87,10 @@ public class SIPRequestHeaderPlarformProvider {
87 } 87 }
88 88
89 public Request createRegisterRequest(@NotNull ParentPlatform parentPlatform, String fromTag, String toTag, 89 public Request createRegisterRequest(@NotNull ParentPlatform parentPlatform, String fromTag, String toTag,
90 - WWWAuthenticateHeader www , CallIdHeader callIdHeader, boolean isRegister) throws ParseException, PeerUnavailableException, InvalidArgumentException { 90 + WWWAuthenticateHeader www , CallIdHeader callIdHeader, int expires) throws ParseException, PeerUnavailableException, InvalidArgumentException {
91 91
92 92
93 - Request registerRequest = createRegisterRequest(parentPlatform, redisCatchStorage.getCSEQ(), fromTag, toTag, callIdHeader, isRegister); 93 + Request registerRequest = createRegisterRequest(parentPlatform, redisCatchStorage.getCSEQ(), fromTag, toTag, callIdHeader, expires);
94 SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP() + ":" + parentPlatform.getServerPort()); 94 SipURI requestURI = sipLayer.getSipFactory().createAddressFactory().createSipURI(parentPlatform.getServerGBId(), parentPlatform.getServerIP() + ":" + parentPlatform.getServerPort());
95 if (www == null) { 95 if (www == null) {
96 AuthorizationHeader authorizationHeader = sipLayer.getSipFactory().createHeaderFactory().createAuthorizationHeader("Digest"); 96 AuthorizationHeader authorizationHeader = sipLayer.getSipFactory().createHeaderFactory().createAuthorizationHeader("Digest");
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommanderFroPlatform.java
@@ -71,23 +71,23 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -71,23 +71,23 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
71 71
72 @Override 72 @Override
73 public void register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException { 73 public void register(ParentPlatform parentPlatform, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException {
74 - register(parentPlatform, null, null, errorEvent, okEvent, false, true); 74 + register(parentPlatform, null, null, errorEvent, okEvent, true);
75 } 75 }
76 76
77 @Override 77 @Override
78 public void register(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException { 78 public void register(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException {
79 79
80 - register(parentPlatform, sipTransactionInfo, null, errorEvent, okEvent, false, true); 80 + register(parentPlatform, sipTransactionInfo, null, errorEvent, okEvent, true);
81 } 81 }
82 82
83 @Override 83 @Override
84 public void unregister(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException { 84 public void unregister(ParentPlatform parentPlatform, SipTransactionInfo sipTransactionInfo, SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent) throws InvalidArgumentException, ParseException, SipException {
85 - register(parentPlatform, sipTransactionInfo, null, errorEvent, okEvent, false, false); 85 + register(parentPlatform, sipTransactionInfo, null, errorEvent, okEvent, false);
86 } 86 }
87 87
88 @Override 88 @Override
89 public void register(ParentPlatform parentPlatform, @Nullable SipTransactionInfo sipTransactionInfo, @Nullable WWWAuthenticateHeader www, 89 public void register(ParentPlatform parentPlatform, @Nullable SipTransactionInfo sipTransactionInfo, @Nullable WWWAuthenticateHeader www,
90 - SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean registerAgain, boolean isRegister) throws SipException, InvalidArgumentException, ParseException { 90 + SipSubscribe.Event errorEvent , SipSubscribe.Event okEvent, boolean isRegister) throws SipException, InvalidArgumentException, ParseException {
91 Request request; 91 Request request;
92 92
93 CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport()); 93 CallIdHeader callIdHeader = sipSender.getNewCallIdHeader(parentPlatform.getDeviceIp(),parentPlatform.getTransport());
@@ -105,10 +105,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -105,10 +105,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
105 } 105 }
106 } 106 }
107 107
108 - if (!registerAgain ) { 108 + if (www == null ) {
109 request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, 109 request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform,
110 redisCatchStorage.getCSEQ(), fromTag, 110 redisCatchStorage.getCSEQ(), fromTag,
111 - toTag, callIdHeader, isRegister); 111 + toTag, callIdHeader, isRegister? parentPlatform.getExpires() : 0);
112 // 将 callid 写入缓存, 等注册成功可以更新状态 112 // 将 callid 写入缓存, 等注册成功可以更新状态
113 String callIdFromHeader = callIdHeader.getCallId(); 113 String callIdFromHeader = callIdHeader.getCallId();
114 redisCatchStorage.updatePlatformRegisterInfo(callIdFromHeader, PlatformRegisterInfo.getInstance(parentPlatform.getServerGBId(), isRegister)); 114 redisCatchStorage.updatePlatformRegisterInfo(callIdFromHeader, PlatformRegisterInfo.getInstance(parentPlatform.getServerGBId(), isRegister));
@@ -126,7 +126,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -126,7 +126,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
126 }); 126 });
127 127
128 }else { 128 }else {
129 - request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, fromTag, toTag, www, callIdHeader, isRegister); 129 + request = headerProviderPlatformProvider.createRegisterRequest(parentPlatform, fromTag, toTag, www, callIdHeader, isRegister? parentPlatform.getExpires() : 0);
130 } 130 }
131 131
132 sipSender.transmitRequest(parentPlatform.getDeviceIp(), request, null, okEvent); 132 sipSender.transmitRequest(parentPlatform.getDeviceIp(), request, null, okEvent);
@@ -497,10 +497,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform { @@ -497,10 +497,10 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
497 private void sendNotify(ParentPlatform parentPlatform, String catalogXmlContent, 497 private void sendNotify(ParentPlatform parentPlatform, String catalogXmlContent,
498 SubscribeInfo subscribeInfo, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent ) 498 SubscribeInfo subscribeInfo, SipSubscribe.Event errorEvent, SipSubscribe.Event okEvent )
499 throws SipException, ParseException, InvalidArgumentException { 499 throws SipException, ParseException, InvalidArgumentException {
500 - MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipLayer.getSipFactory().createMessageFactory(); 500 + MessageFactoryImpl messageFactory = (MessageFactoryImpl) sipLayer.getSipFactory().createMessageFactory();
501 String characterSet = parentPlatform.getCharacterSet(); 501 String characterSet = parentPlatform.getCharacterSet();
502 - // 设置编码, 防止中文乱码  
503 - messageFactory.setDefaultContentEncodingCharset(characterSet); 502 + // 设置编码, 防止中文乱码
  503 + messageFactory.setDefaultContentEncodingCharset(characterSet);
504 504
505 SIPRequest notifyRequest = headerProviderPlatformProvider.createNotifyRequest(parentPlatform, catalogXmlContent, subscribeInfo); 505 SIPRequest notifyRequest = headerProviderPlatformProvider.createNotifyRequest(parentPlatform, catalogXmlContent, subscribeInfo);
506 506
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/message/response/cmd/RecordInfoResponseMessageHandler.java
@@ -10,7 +10,6 @@ import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessag @@ -10,7 +10,6 @@ import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.IMessag
10 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler; 10 import com.genersoft.iot.vmp.gb28181.transmit.event.request.impl.message.response.ResponseMessageHandler;
11 import com.genersoft.iot.vmp.utils.DateUtil; 11 import com.genersoft.iot.vmp.utils.DateUtil;
12 import com.genersoft.iot.vmp.utils.UJson; 12 import com.genersoft.iot.vmp.utils.UJson;
13 -import com.genersoft.iot.vmp.utils.redis.RedisUtil;  
14 import gov.nist.javax.sip.message.SIPRequest; 13 import gov.nist.javax.sip.message.SIPRequest;
15 import org.dom4j.Element; 14 import org.dom4j.Element;
16 import org.slf4j.Logger; 15 import org.slf4j.Logger;
@@ -18,6 +17,7 @@ import org.slf4j.LoggerFactory; @@ -18,6 +17,7 @@ import org.slf4j.LoggerFactory;
18 import org.springframework.beans.factory.InitializingBean; 17 import org.springframework.beans.factory.InitializingBean;
19 import org.springframework.beans.factory.annotation.Autowired; 18 import org.springframework.beans.factory.annotation.Autowired;
20 import org.springframework.beans.factory.annotation.Qualifier; 19 import org.springframework.beans.factory.annotation.Qualifier;
  20 +import org.springframework.data.redis.core.RedisTemplate;
21 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 21 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
22 import org.springframework.stereotype.Component; 22 import org.springframework.stereotype.Component;
23 import org.springframework.util.ObjectUtils; 23 import org.springframework.util.ObjectUtils;
@@ -29,6 +29,7 @@ import javax.sip.message.Response; @@ -29,6 +29,7 @@ import javax.sip.message.Response;
29 import java.text.ParseException; 29 import java.text.ParseException;
30 import java.util.*; 30 import java.util.*;
31 import java.util.concurrent.ConcurrentLinkedQueue; 31 import java.util.concurrent.ConcurrentLinkedQueue;
  32 +import java.util.concurrent.TimeUnit;
32 import java.util.stream.Collectors; 33 import java.util.stream.Collectors;
33 34
34 import static com.genersoft.iot.vmp.gb28181.utils.XmlUtil.getText; 35 import static com.genersoft.iot.vmp.gb28181.utils.XmlUtil.getText;
@@ -57,6 +58,9 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent @@ -57,6 +58,9 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent
57 @Autowired 58 @Autowired
58 private ThreadPoolTaskExecutor taskExecutor; 59 private ThreadPoolTaskExecutor taskExecutor;
59 60
  61 + @Autowired
  62 + private RedisTemplate<Object, Object> redisTemplate;
  63 +
60 private Long recordInfoTtl = 1800L; 64 private Long recordInfoTtl = 1800L;
61 65
62 @Override 66 @Override
@@ -130,10 +134,11 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent @@ -130,10 +134,11 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent
130 .collect(Collectors.toMap(record -> record.getStartTime()+ record.getEndTime(), UJson::writeJson)); 134 .collect(Collectors.toMap(record -> record.getStartTime()+ record.getEndTime(), UJson::writeJson));
131 // 获取任务结果数据 135 // 获取任务结果数据
132 String resKey = VideoManagerConstants.REDIS_RECORD_INFO_RES_PRE + channelId + sn; 136 String resKey = VideoManagerConstants.REDIS_RECORD_INFO_RES_PRE + channelId + sn;
133 - RedisUtil.hmset(resKey, map, recordInfoTtl); 137 + redisTemplate.opsForHash().putAll(resKey, map);
  138 + redisTemplate.expire(resKey, recordInfoTtl, TimeUnit.SECONDS);
134 String resCountKey = VideoManagerConstants.REDIS_RECORD_INFO_RES_COUNT_PRE + channelId + sn; 139 String resCountKey = VideoManagerConstants.REDIS_RECORD_INFO_RES_COUNT_PRE + channelId + sn;
135 - long incr = RedisUtil.incr(resCountKey, map.size());  
136 - RedisUtil.expire(resCountKey, recordInfoTtl); 140 + long incr = redisTemplate.opsForValue().increment(resCountKey, map.size());
  141 + redisTemplate.expire(resCountKey, recordInfoTtl, TimeUnit.SECONDS);
137 recordInfo.setRecordList(recordList); 142 recordInfo.setRecordList(recordList);
138 recordInfo.setCount(Math.toIntExact(incr)); 143 recordInfo.setCount(Math.toIntExact(incr));
139 eventPublisher.recordEndEventPush(recordInfo); 144 eventPublisher.recordEndEventPush(recordInfo);
@@ -141,7 +146,7 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent @@ -141,7 +146,7 @@ public class RecordInfoResponseMessageHandler extends SIPRequestProcessorParent
141 return; 146 return;
142 } 147 }
143 // 已接收完成 148 // 已接收完成
144 - List<RecordItem> resList = RedisUtil.hmget(resKey).values().stream().map(e -> UJson.readJson(e.toString(), RecordItem.class)).collect(Collectors.toList()); 149 + List<RecordItem> resList = redisTemplate.opsForHash().entries(resKey).values().stream().map(e -> UJson.readJson(e.toString(), RecordItem.class)).collect(Collectors.toList());
145 if (resList.size() < sumNum) { 150 if (resList.size() < sumNum) {
146 return; 151 return;
147 } 152 }
src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/response/impl/RegisterResponseProcessor.java
@@ -92,7 +92,7 @@ public class RegisterResponseProcessor extends SIPResponseProcessorAbstract { @@ -92,7 +92,7 @@ public class RegisterResponseProcessor extends SIPResponseProcessorAbstract {
92 WWWAuthenticateHeader www = (WWWAuthenticateHeader)response.getHeader(WWWAuthenticateHeader.NAME); 92 WWWAuthenticateHeader www = (WWWAuthenticateHeader)response.getHeader(WWWAuthenticateHeader.NAME);
93 SipTransactionInfo sipTransactionInfo = new SipTransactionInfo(response); 93 SipTransactionInfo sipTransactionInfo = new SipTransactionInfo(response);
94 try { 94 try {
95 - sipCommanderForPlatform.register(parentPlatform, sipTransactionInfo, www, null, null, true, platformRegisterInfo.isRegister()); 95 + sipCommanderForPlatform.register(parentPlatform, sipTransactionInfo, www, null, null, platformRegisterInfo.isRegister());
96 } catch (SipException | InvalidArgumentException | ParseException e) { 96 } catch (SipException | InvalidArgumentException | ParseException e) {
97 logger.error("[命令发送失败] 国标级联 再次注册: {}", e.getMessage()); 97 logger.error("[命令发送失败] 国标级联 再次注册: {}", e.getMessage());
98 } 98 }
src/main/java/com/genersoft/iot/vmp/service/impl/MediaServerServiceImpl.java
@@ -10,7 +10,6 @@ import com.genersoft.iot.vmp.conf.UserSetting; @@ -10,7 +10,6 @@ import com.genersoft.iot.vmp.conf.UserSetting;
10 import com.genersoft.iot.vmp.conf.exception.ControllerException; 10 import com.genersoft.iot.vmp.conf.exception.ControllerException;
11 import com.genersoft.iot.vmp.gb28181.event.EventPublisher; 11 import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
12 import com.genersoft.iot.vmp.gb28181.session.SsrcConfig; 12 import com.genersoft.iot.vmp.gb28181.session.SsrcConfig;
13 -import com.genersoft.iot.vmp.gb28181.session.VideoStreamSessionManager;  
14 import com.genersoft.iot.vmp.media.zlm.AssistRESTfulUtils; 13 import com.genersoft.iot.vmp.media.zlm.AssistRESTfulUtils;
15 import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils; 14 import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
16 import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory; 15 import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
@@ -33,6 +32,7 @@ import org.slf4j.Logger; @@ -33,6 +32,7 @@ import org.slf4j.Logger;
33 import org.slf4j.LoggerFactory; 32 import org.slf4j.LoggerFactory;
34 import org.springframework.beans.factory.annotation.Autowired; 33 import org.springframework.beans.factory.annotation.Autowired;
35 import org.springframework.beans.factory.annotation.Value; 34 import org.springframework.beans.factory.annotation.Value;
  35 +import org.springframework.data.redis.core.RedisTemplate;
36 import org.springframework.jdbc.datasource.DataSourceTransactionManager; 36 import org.springframework.jdbc.datasource.DataSourceTransactionManager;
37 import org.springframework.stereotype.Service; 37 import org.springframework.stereotype.Service;
38 import org.springframework.transaction.TransactionDefinition; 38 import org.springframework.transaction.TransactionDefinition;
@@ -75,13 +75,11 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -75,13 +75,11 @@ public class MediaServerServiceImpl implements IMediaServerService {
75 private MediaServerMapper mediaServerMapper; 75 private MediaServerMapper mediaServerMapper;
76 76
77 @Autowired 77 @Autowired
78 - DataSourceTransactionManager dataSourceTransactionManager; 78 + private DataSourceTransactionManager dataSourceTransactionManager;
79 79
80 @Autowired 80 @Autowired
81 - TransactionDefinition transactionDefinition; 81 + private TransactionDefinition transactionDefinition;
82 82
83 - @Autowired  
84 - private VideoStreamSessionManager streamSession;  
85 83
86 @Autowired 84 @Autowired
87 private ZLMRTPServerFactory zlmrtpServerFactory; 85 private ZLMRTPServerFactory zlmrtpServerFactory;
@@ -95,6 +93,9 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -95,6 +93,9 @@ public class MediaServerServiceImpl implements IMediaServerService {
95 @Autowired 93 @Autowired
96 private IRedisCatchStorage redisCatchStorage; 94 private IRedisCatchStorage redisCatchStorage;
97 95
  96 + @Autowired
  97 + private RedisTemplate<Object, Object> redisTemplate;
  98 +
98 /** 99 /**
99 * 初始化 100 * 初始化
100 */ 101 */
@@ -109,12 +110,13 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -109,12 +110,13 @@ public class MediaServerServiceImpl implements IMediaServerService {
109 if (mediaServerItem.getSsrcConfig() == null) { 110 if (mediaServerItem.getSsrcConfig() == null) {
110 SsrcConfig ssrcConfig = new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain()); 111 SsrcConfig ssrcConfig = new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain());
111 mediaServerItem.setSsrcConfig(ssrcConfig); 112 mediaServerItem.setSsrcConfig(ssrcConfig);
112 - RedisUtil.set(VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId(), mediaServerItem); 113 + redisTemplate.opsForValue().set(VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId(), mediaServerItem);
113 } 114 }
114 // 查询redis是否存在此mediaServer 115 // 查询redis是否存在此mediaServer
115 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId(); 116 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId();
116 - if (!RedisUtil.hasKey(key)) {  
117 - RedisUtil.set(key, mediaServerItem); 117 + Boolean hasKey = redisTemplate.hasKey(key);
  118 + if (hasKey != null && ! hasKey) {
  119 + redisTemplate.opsForValue().set(key, mediaServerItem);
118 } 120 }
119 121
120 } 122 }
@@ -159,7 +161,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -159,7 +161,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
159 } else { 161 } else {
160 rtpServerPort = mediaServerItem.getRtpProxyPort(); 162 rtpServerPort = mediaServerItem.getRtpProxyPort();
161 } 163 }
162 - RedisUtil.set(key, mediaServerItem); 164 + redisTemplate.opsForValue().set(key, mediaServerItem);
163 return new SSRCInfo(rtpServerPort, ssrc, streamId); 165 return new SSRCInfo(rtpServerPort, ssrc, streamId);
164 } 166 }
165 } 167 }
@@ -193,7 +195,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -193,7 +195,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
193 ssrcConfig.releaseSsrc(ssrc); 195 ssrcConfig.releaseSsrc(ssrc);
194 mediaServerItem.setSsrcConfig(ssrcConfig); 196 mediaServerItem.setSsrcConfig(ssrcConfig);
195 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId(); 197 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId();
196 - RedisUtil.set(key, mediaServerItem); 198 + redisTemplate.opsForValue().set(key, mediaServerItem);
197 } 199 }
198 200
199 /** 201 /**
@@ -202,7 +204,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -202,7 +204,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
202 @Override 204 @Override
203 public void clearRTPServer(MediaServerItem mediaServerItem) { 205 public void clearRTPServer(MediaServerItem mediaServerItem) {
204 mediaServerItem.setSsrcConfig(new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain())); 206 mediaServerItem.setSsrcConfig(new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain()));
205 - RedisUtil.zAdd(VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(), mediaServerItem.getId(), 0); 207 + redisTemplate.opsForZSet().add(VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(), mediaServerItem.getId(), 0);
206 208
207 } 209 }
208 210
@@ -224,22 +226,22 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -224,22 +226,22 @@ public class MediaServerServiceImpl implements IMediaServerService {
224 ); 226 );
225 } 227 }
226 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItemInDataBase.getId(); 228 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItemInDataBase.getId();
227 - RedisUtil.set(key, mediaServerItemInDataBase); 229 + redisTemplate.opsForValue().set(key, mediaServerItemInDataBase);
228 } 230 }
229 231
230 @Override 232 @Override
231 public List<MediaServerItem> getAll() { 233 public List<MediaServerItem> getAll() {
232 List<MediaServerItem> result = new ArrayList<>(); 234 List<MediaServerItem> result = new ArrayList<>();
233 - List<Object> mediaServerKeys = RedisUtil.scan(String.format("%S*", VideoManagerConstants.MEDIA_SERVER_PREFIX+ userSetting.getServerId() + "_" )); 235 + List<Object> mediaServerKeys = RedisUtil.scan(redisTemplate, String.format("%S*", VideoManagerConstants.MEDIA_SERVER_PREFIX+ userSetting.getServerId() + "_" ));
234 String onlineKey = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); 236 String onlineKey = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
235 for (Object mediaServerKey : mediaServerKeys) { 237 for (Object mediaServerKey : mediaServerKeys) {
236 String key = (String) mediaServerKey; 238 String key = (String) mediaServerKey;
237 - MediaServerItem mediaServerItem = JsonUtil.redisJsonToObject(key, MediaServerItem.class); 239 + MediaServerItem mediaServerItem = JsonUtil.redisJsonToObject(redisTemplate, key, MediaServerItem.class);
238 if (Objects.isNull(mediaServerItem)) { 240 if (Objects.isNull(mediaServerItem)) {
239 continue; 241 continue;
240 } 242 }
241 // 检查状态 243 // 检查状态
242 - Double aDouble = RedisUtil.zScore(onlineKey, mediaServerItem.getId()); 244 + Double aDouble = redisTemplate.opsForZSet().score(onlineKey, mediaServerItem.getId());
243 if (aDouble != null) { 245 if (aDouble != null) {
244 mediaServerItem.setStatus(true); 246 mediaServerItem.setStatus(true);
245 } 247 }
@@ -265,13 +267,14 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -265,13 +267,14 @@ public class MediaServerServiceImpl implements IMediaServerService {
265 @Override 267 @Override
266 public List<MediaServerItem> getAllOnline() { 268 public List<MediaServerItem> getAllOnline() {
267 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); 269 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
268 - Set<String> mediaServerIdSet = RedisUtil.zRevRange(key, 0, -1); 270 + Set<Object> mediaServerIdSet = redisTemplate.opsForZSet().reverseRange(key, 0, -1);
269 271
270 List<MediaServerItem> result = new ArrayList<>(); 272 List<MediaServerItem> result = new ArrayList<>();
271 if (mediaServerIdSet != null && mediaServerIdSet.size() > 0) { 273 if (mediaServerIdSet != null && mediaServerIdSet.size() > 0) {
272 - for (String mediaServerId : mediaServerIdSet) {  
273 - String serverKey = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerId;  
274 - result.add((MediaServerItem) RedisUtil.get(serverKey)); 274 + for (Object mediaServerId : mediaServerIdSet) {
  275 + String mediaServerIdStr = (String) mediaServerId;
  276 + String serverKey = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerIdStr;
  277 + result.add((MediaServerItem) redisTemplate.opsForValue().get(serverKey));
275 } 278 }
276 } 279 }
277 Collections.reverse(result); 280 Collections.reverse(result);
@@ -289,7 +292,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -289,7 +292,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
289 return null; 292 return null;
290 } 293 }
291 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerId; 294 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerId;
292 - return JsonUtil.redisJsonToObject(key, MediaServerItem.class); 295 + return JsonUtil.redisJsonToObject(redisTemplate, key, MediaServerItem.class);
293 } 296 }
294 297
295 @Override 298 @Override
@@ -301,7 +304,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -301,7 +304,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
301 @Override 304 @Override
302 public void clearMediaServerForOnline() { 305 public void clearMediaServerForOnline() {
303 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); 306 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
304 - RedisUtil.del(key); 307 + redisTemplate.delete(key);
305 } 308 }
306 309
307 @Override 310 @Override
@@ -401,16 +404,16 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -401,16 +404,16 @@ public class MediaServerServiceImpl implements IMediaServerService {
401 } 404 }
402 mediaServerMapper.update(serverItem); 405 mediaServerMapper.update(serverItem);
403 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + zlmServerConfig.getGeneralMediaServerId(); 406 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + zlmServerConfig.getGeneralMediaServerId();
404 - if (RedisUtil.get(key) == null) { 407 + if (redisTemplate.opsForValue().get(key) == null) {
405 SsrcConfig ssrcConfig = new SsrcConfig(zlmServerConfig.getGeneralMediaServerId(), null, sipConfig.getDomain()); 408 SsrcConfig ssrcConfig = new SsrcConfig(zlmServerConfig.getGeneralMediaServerId(), null, sipConfig.getDomain());
406 serverItem.setSsrcConfig(ssrcConfig); 409 serverItem.setSsrcConfig(ssrcConfig);
407 }else { 410 }else {
408 - MediaServerItem mediaServerItemInRedis = JsonUtil.redisJsonToObject(key, MediaServerItem.class); 411 + MediaServerItem mediaServerItemInRedis = JsonUtil.redisJsonToObject(redisTemplate, key, MediaServerItem.class);
409 if (Objects.nonNull(mediaServerItemInRedis)) { 412 if (Objects.nonNull(mediaServerItemInRedis)) {
410 serverItem.setSsrcConfig(mediaServerItemInRedis.getSsrcConfig()); 413 serverItem.setSsrcConfig(mediaServerItemInRedis.getSsrcConfig());
411 } 414 }
412 } 415 }
413 - RedisUtil.set(key, serverItem); 416 + redisTemplate.opsForValue().set(key, serverItem);
414 resetOnlineServerItem(serverItem); 417 resetOnlineServerItem(serverItem);
415 418
416 419
@@ -473,15 +476,15 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -473,15 +476,15 @@ public class MediaServerServiceImpl implements IMediaServerService {
473 // 更新缓存 476 // 更新缓存
474 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); 477 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
475 // 使用zset的分数作为当前并发量, 默认值设置为0 478 // 使用zset的分数作为当前并发量, 默认值设置为0
476 - if (RedisUtil.zScore(key, serverItem.getId()) == null) { // 不存在则设置默认值 已存在则重置  
477 - RedisUtil.zAdd(key, serverItem.getId(), 0L); 479 + if (redisTemplate.opsForZSet().score(key, serverItem.getId()) == null) { // 不存在则设置默认值 已存在则重置
  480 + redisTemplate.opsForZSet().add(key, serverItem.getId(), 0L);
478 // 查询服务流数量 481 // 查询服务流数量
479 zlmresTfulUtils.getMediaList(serverItem, null, null, "rtsp",(mediaList ->{ 482 zlmresTfulUtils.getMediaList(serverItem, null, null, "rtsp",(mediaList ->{
480 Integer code = mediaList.getInteger("code"); 483 Integer code = mediaList.getInteger("code");
481 if (code == 0) { 484 if (code == 0) {
482 JSONArray data = mediaList.getJSONArray("data"); 485 JSONArray data = mediaList.getJSONArray("data");
483 if (data != null) { 486 if (data != null) {
484 - RedisUtil.zAdd(key, serverItem.getId(), data.size()); 487 + redisTemplate.opsForZSet().add(key, serverItem.getId(), data.size());
485 } 488 }
486 } 489 }
487 })); 490 }));
@@ -497,14 +500,14 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -497,14 +500,14 @@ public class MediaServerServiceImpl implements IMediaServerService {
497 return; 500 return;
498 } 501 }
499 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); 502 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
500 - RedisUtil.zIncrScore(key, mediaServerId, 1); 503 + redisTemplate.opsForZSet().incrementScore(key, mediaServerId, 1);
501 504
502 } 505 }
503 506
504 @Override 507 @Override
505 public void removeCount(String mediaServerId) { 508 public void removeCount(String mediaServerId) {
506 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); 509 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
507 - RedisUtil.zIncrScore(key, mediaServerId, - 1); 510 + redisTemplate.opsForZSet().incrementScore(key, mediaServerId, - 1);
508 } 511 }
509 512
510 /** 513 /**
@@ -514,16 +517,14 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -514,16 +517,14 @@ public class MediaServerServiceImpl implements IMediaServerService {
514 @Override 517 @Override
515 public MediaServerItem getMediaServerForMinimumLoad(Boolean hasAssist) { 518 public MediaServerItem getMediaServerForMinimumLoad(Boolean hasAssist) {
516 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(); 519 String key = VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId();
517 -  
518 - if (RedisUtil.zSize(key) == null || RedisUtil.zSize(key) == 0) {  
519 - if (RedisUtil.zSize(key) == null || RedisUtil.zSize(key) == 0) {  
520 - logger.info("获取负载最低的节点时无在线节点");  
521 - return null;  
522 - } 520 + Long size = redisTemplate.opsForZSet().zCard(key);
  521 + if (size == null || size == 0) {
  522 + logger.info("获取负载最低的节点时无在线节点");
  523 + return null;
523 } 524 }
524 525
525 // 获取分数最低的,及并发最低的 526 // 获取分数最低的,及并发最低的
526 - Set<Object> objects = RedisUtil.zRange(key, 0, -1); 527 + Set<Object> objects = redisTemplate.opsForZSet().range(key, 0, -1);
527 ArrayList<Object> mediaServerObjectS = new ArrayList<>(objects); 528 ArrayList<Object> mediaServerObjectS = new ArrayList<>(objects);
528 MediaServerItem mediaServerItem = null; 529 MediaServerItem mediaServerItem = null;
529 if (hasAssist == null) { 530 if (hasAssist == null) {
@@ -686,9 +687,9 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -686,9 +687,9 @@ public class MediaServerServiceImpl implements IMediaServerService {
686 687
687 @Override 688 @Override
688 public void delete(String id) { 689 public void delete(String id) {
689 - RedisUtil.zRemove(VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(), id); 690 + redisTemplate.opsForZSet().remove(VideoManagerConstants.MEDIA_SERVERS_ONLINE_PREFIX + userSetting.getServerId(), id);
690 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + id; 691 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + id;
691 - RedisUtil.del(key); 692 + redisTemplate.delete(key);
692 } 693 }
693 @Override 694 @Override
694 public void deleteDb(String id){ 695 public void deleteDb(String id){
@@ -711,7 +712,7 @@ public class MediaServerServiceImpl implements IMediaServerService { @@ -711,7 +712,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
711 SsrcConfig ssrcConfig = new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain()); 712 SsrcConfig ssrcConfig = new SsrcConfig(mediaServerItem.getId(), null, sipConfig.getDomain());
712 mediaServerItem.setSsrcConfig(ssrcConfig); 713 mediaServerItem.setSsrcConfig(ssrcConfig);
713 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId(); 714 String key = VideoManagerConstants.MEDIA_SERVER_PREFIX + userSetting.getServerId() + "_" + mediaServerItem.getId();
714 - RedisUtil.set(key, mediaServerItem); 715 + redisTemplate.opsForValue().set(key, mediaServerItem);
715 clearRTPServer(mediaServerItem); 716 clearRTPServer(mediaServerItem);
716 } 717 }
717 final String zlmKeepaliveKey = zlmKeepaliveKeyPrefix + mediaServerItem.getId(); 718 final String zlmKeepaliveKey = zlmKeepaliveKeyPrefix + mediaServerItem.getId();
src/main/java/com/genersoft/iot/vmp/service/impl/PlatformServiceImpl.java
@@ -146,7 +146,7 @@ public class PlatformServiceImpl implements IPlatformService { @@ -146,7 +146,7 @@ public class PlatformServiceImpl implements IPlatformService {
146 // 注销旧的 146 // 注销旧的
147 try { 147 try {
148 if (parentPlatformOld.isStatus()) { 148 if (parentPlatformOld.isStatus()) {
149 - logger.info("保存平台{}时发现救平台在线,发送注销命令", parentPlatform.getDeviceGBId()); 149 + logger.info("保存平台{}时发现救平台在线,发送注销命令", parentPlatformOld.getServerGBId());
150 commanderForPlatform.unregister(parentPlatformOld, parentPlatformCatchOld.getSipTransactionInfo(), null, eventResult -> { 150 commanderForPlatform.unregister(parentPlatformOld, parentPlatformCatchOld.getSipTransactionInfo(), null, eventResult -> {
151 logger.info("[国标级联] 注销成功, 平台:{}", parentPlatformOld.getServerGBId()); 151 logger.info("[国标级联] 注销成功, 平台:{}", parentPlatformOld.getServerGBId());
152 }); 152 });
@@ -253,7 +253,7 @@ public class PlatformServiceImpl implements IPlatformService { @@ -253,7 +253,7 @@ public class PlatformServiceImpl implements IPlatformService {
253 // 心跳成功 253 // 心跳成功
254 // 清空之前的心跳超时计数 254 // 清空之前的心跳超时计数
255 ParentPlatformCatch platformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId()); 255 ParentPlatformCatch platformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId());
256 - if (platformCatch.getKeepAliveReply() > 0) { 256 + if (platformCatch != null && platformCatch.getKeepAliveReply() > 0) {
257 platformCatch.setKeepAliveReply(0); 257 platformCatch.setKeepAliveReply(0);
258 redisCatchStorage.updatePlatformCatchInfo(platformCatch); 258 redisCatchStorage.updatePlatformCatchInfo(platformCatch);
259 } 259 }
src/main/java/com/genersoft/iot/vmp/service/impl/PlayServiceImpl.java
@@ -33,12 +33,12 @@ import com.genersoft.iot.vmp.service.bean.SSRCInfo; @@ -33,12 +33,12 @@ import com.genersoft.iot.vmp.service.bean.SSRCInfo;
33 import com.genersoft.iot.vmp.storager.IRedisCatchStorage; 33 import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
34 import com.genersoft.iot.vmp.storager.IVideoManagerStorage; 34 import com.genersoft.iot.vmp.storager.IVideoManagerStorage;
35 import com.genersoft.iot.vmp.utils.DateUtil; 35 import com.genersoft.iot.vmp.utils.DateUtil;
36 -import com.genersoft.iot.vmp.utils.redis.RedisUtil;  
37 import com.genersoft.iot.vmp.vmanager.bean.ErrorCode; 36 import com.genersoft.iot.vmp.vmanager.bean.ErrorCode;
38 import com.genersoft.iot.vmp.vmanager.bean.WVPResult; 37 import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
39 import org.slf4j.Logger; 38 import org.slf4j.Logger;
40 import org.slf4j.LoggerFactory; 39 import org.slf4j.LoggerFactory;
41 import org.springframework.beans.factory.annotation.Autowired; 40 import org.springframework.beans.factory.annotation.Autowired;
  41 +import org.springframework.data.redis.core.RedisTemplate;
42 import org.springframework.stereotype.Service; 42 import org.springframework.stereotype.Service;
43 import org.springframework.util.ObjectUtils; 43 import org.springframework.util.ObjectUtils;
44 44
@@ -100,6 +100,9 @@ public class PlayServiceImpl implements IPlayService { @@ -100,6 +100,9 @@ public class PlayServiceImpl implements IPlayService {
100 @Autowired 100 @Autowired
101 private ZlmHttpHookSubscribe subscribe; 101 private ZlmHttpHookSubscribe subscribe;
102 102
  103 + @Autowired
  104 + private RedisTemplate<Object, Object> redisTemplate;
  105 +
103 106
104 @Override 107 @Override
105 public void play(MediaServerItem mediaServerItem, String deviceId, String channelId, 108 public void play(MediaServerItem mediaServerItem, String deviceId, String channelId,
@@ -886,7 +889,7 @@ public class PlayServiceImpl implements IPlayService { @@ -886,7 +889,7 @@ public class PlayServiceImpl implements IPlayService {
886 throw new ServiceException("streamId不存在"); 889 throw new ServiceException("streamId不存在");
887 } 890 }
888 streamInfo.setPause(true); 891 streamInfo.setPause(true);
889 - RedisUtil.set(key, streamInfo); 892 + redisTemplate.opsForValue().set(key, streamInfo);
890 MediaServerItem mediaServerItem = mediaServerService.getOne(streamInfo.getMediaServerId()); 893 MediaServerItem mediaServerItem = mediaServerService.getOne(streamInfo.getMediaServerId());
891 if (null == mediaServerItem) { 894 if (null == mediaServerItem) {
892 logger.warn("mediaServer 不存在!"); 895 logger.warn("mediaServer 不存在!");
@@ -910,7 +913,7 @@ public class PlayServiceImpl implements IPlayService { @@ -910,7 +913,7 @@ public class PlayServiceImpl implements IPlayService {
910 throw new ServiceException("streamId不存在"); 913 throw new ServiceException("streamId不存在");
911 } 914 }
912 streamInfo.setPause(false); 915 streamInfo.setPause(false);
913 - RedisUtil.set(key, streamInfo); 916 + redisTemplate.opsForValue().set(key, streamInfo);
914 MediaServerItem mediaServerItem = mediaServerService.getOne(streamInfo.getMediaServerId()); 917 MediaServerItem mediaServerItem = mediaServerService.getOne(streamInfo.getMediaServerId());
915 if (null == mediaServerItem) { 918 if (null == mediaServerItem) {
916 logger.warn("mediaServer 不存在!"); 919 logger.warn("mediaServer 不存在!");
src/main/java/com/genersoft/iot/vmp/service/redisMsg/RedisGbPlayMsgListener.java
@@ -2,19 +2,17 @@ package com.genersoft.iot.vmp.service.redisMsg; @@ -2,19 +2,17 @@ package com.genersoft.iot.vmp.service.redisMsg;
2 2
3 import com.alibaba.fastjson2.JSON; 3 import com.alibaba.fastjson2.JSON;
4 import com.alibaba.fastjson2.JSONObject; 4 import com.alibaba.fastjson2.JSONObject;
  5 +import com.genersoft.iot.vmp.common.VideoManagerConstants;
5 import com.genersoft.iot.vmp.conf.DynamicTask; 6 import com.genersoft.iot.vmp.conf.DynamicTask;
6 import com.genersoft.iot.vmp.conf.UserSetting; 7 import com.genersoft.iot.vmp.conf.UserSetting;
7 import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem; 8 import com.genersoft.iot.vmp.gb28181.bean.SendRtpItem;
8 -import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe;  
9 -import com.genersoft.iot.vmp.media.zlm.ZLMMediaListManager;  
10 import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory; 9 import com.genersoft.iot.vmp.media.zlm.ZLMRTPServerFactory;
  10 +import com.genersoft.iot.vmp.media.zlm.ZlmHttpHookSubscribe;
11 import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeFactory; 11 import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeFactory;
12 import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeForStreamChange; 12 import com.genersoft.iot.vmp.media.zlm.dto.HookSubscribeForStreamChange;
13 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem; 13 import com.genersoft.iot.vmp.media.zlm.dto.MediaServerItem;
14 import com.genersoft.iot.vmp.service.IMediaServerService; 14 import com.genersoft.iot.vmp.service.IMediaServerService;
15 import com.genersoft.iot.vmp.service.bean.*; 15 import com.genersoft.iot.vmp.service.bean.*;
16 -import com.genersoft.iot.vmp.storager.IRedisCatchStorage;  
17 -import com.genersoft.iot.vmp.utils.redis.RedisUtil;  
18 import com.genersoft.iot.vmp.vmanager.bean.WVPResult; 16 import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
19 import org.slf4j.Logger; 17 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory; 18 import org.slf4j.LoggerFactory;
@@ -22,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired; @@ -22,6 +20,7 @@ import org.springframework.beans.factory.annotation.Autowired;
22 import org.springframework.beans.factory.annotation.Qualifier; 20 import org.springframework.beans.factory.annotation.Qualifier;
23 import org.springframework.data.redis.connection.Message; 21 import org.springframework.data.redis.connection.Message;
24 import org.springframework.data.redis.connection.MessageListener; 22 import org.springframework.data.redis.connection.MessageListener;
  23 +import org.springframework.data.redis.core.RedisTemplate;
25 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; 24 import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
26 import org.springframework.stereotype.Component; 25 import org.springframework.stereotype.Component;
27 26
@@ -68,7 +67,7 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -68,7 +67,7 @@ public class RedisGbPlayMsgListener implements MessageListener {
68 67
69 68
70 @Autowired 69 @Autowired
71 - private ZLMMediaListManager zlmMediaListManager; 70 + private RedisTemplate<Object, Object> redisTemplate;
72 71
73 @Autowired 72 @Autowired
74 private ZLMRTPServerFactory zlmrtpServerFactory; 73 private ZLMRTPServerFactory zlmrtpServerFactory;
@@ -76,14 +75,10 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -76,14 +75,10 @@ public class RedisGbPlayMsgListener implements MessageListener {
76 @Autowired 75 @Autowired
77 private IMediaServerService mediaServerService; 76 private IMediaServerService mediaServerService;
78 77
79 - @Autowired  
80 - private IRedisCatchStorage redisCatchStorage;  
81 78
82 @Autowired 79 @Autowired
83 private DynamicTask dynamicTask; 80 private DynamicTask dynamicTask;
84 81
85 - @Autowired  
86 - private ZLMMediaListManager mediaListManager;  
87 82
88 @Autowired 83 @Autowired
89 private ZlmHttpHookSubscribe subscribe; 84 private ZlmHttpHookSubscribe subscribe;
@@ -246,7 +241,7 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -246,7 +241,7 @@ public class RedisGbPlayMsgListener implements MessageListener {
246 WvpRedisMsg response = WvpRedisMsg.getResponseInstance(userSetting.getServerId(), toId, 241 WvpRedisMsg response = WvpRedisMsg.getResponseInstance(userSetting.getServerId(), toId,
247 WvpRedisMsgCmd.REQUEST_PUSH_STREAM, serial, result); 242 WvpRedisMsgCmd.REQUEST_PUSH_STREAM, serial, result);
248 JSONObject jsonObject = (JSONObject)JSON.toJSON(response); 243 JSONObject jsonObject = (JSONObject)JSON.toJSON(response);
249 - RedisUtil.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject); 244 + redisTemplate.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject);
250 } 245 }
251 246
252 /** 247 /**
@@ -265,7 +260,7 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -265,7 +260,7 @@ public class RedisGbPlayMsgListener implements MessageListener {
265 WvpRedisMsgCmd.GET_SEND_ITEM, serial, result); 260 WvpRedisMsgCmd.GET_SEND_ITEM, serial, result);
266 261
267 JSONObject jsonObject = (JSONObject)JSON.toJSON(response); 262 JSONObject jsonObject = (JSONObject)JSON.toJSON(response);
268 - RedisUtil.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject); 263 + redisTemplate.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject);
269 return; 264 return;
270 } 265 }
271 // 确定流是否在线 266 // 确定流是否在线
@@ -288,7 +283,7 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -288,7 +283,7 @@ public class RedisGbPlayMsgListener implements MessageListener {
288 userSetting.getServerId(), toId, WvpRedisMsgCmd.GET_SEND_ITEM, serial, result 283 userSetting.getServerId(), toId, WvpRedisMsgCmd.GET_SEND_ITEM, serial, result
289 ); 284 );
290 JSONObject jsonObject = (JSONObject)JSON.toJSON(response); 285 JSONObject jsonObject = (JSONObject)JSON.toJSON(response);
291 - RedisUtil.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject); 286 + redisTemplate.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject);
292 }, userSetting.getPlatformPlayTimeout()); 287 }, userSetting.getPlatformPlayTimeout());
293 288
294 // 添加订阅 289 // 添加订阅
@@ -302,7 +297,12 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -302,7 +297,12 @@ public class RedisGbPlayMsgListener implements MessageListener {
302 MessageForPushChannel messageForPushChannel = MessageForPushChannel.getInstance(1, content.getApp(), content.getStream(), 297 MessageForPushChannel messageForPushChannel = MessageForPushChannel.getInstance(1, content.getApp(), content.getStream(),
303 content.getChannelId(), content.getPlatformId(), content.getPlatformName(), content.getServerId(), 298 content.getChannelId(), content.getPlatformId(), content.getPlatformName(), content.getServerId(),
304 content.getMediaServerId()); 299 content.getMediaServerId());
305 - redisCatchStorage.sendStreamPushRequestedMsg(messageForPushChannel); 300 +
  301 + String key = VideoManagerConstants.VM_MSG_STREAM_PUSH_REQUESTED;
  302 + logger.info("[redis发送通知] 推流被请求 {}: {}/{}", key, messageForPushChannel.getApp(), messageForPushChannel.getStream());
  303 + redisTemplate.convertAndSend(key, JSON.toJSON(messageForPushChannel));
  304 +
  305 +// redisCatchStorage.sendStreamPushRequestedMsg(messageForPushChannel);
306 306
307 } 307 }
308 } 308 }
@@ -327,7 +327,7 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -327,7 +327,7 @@ public class RedisGbPlayMsgListener implements MessageListener {
327 userSetting.getServerId(), toId, WvpRedisMsgCmd.GET_SEND_ITEM, serial, result 327 userSetting.getServerId(), toId, WvpRedisMsgCmd.GET_SEND_ITEM, serial, result
328 ); 328 );
329 JSONObject jsonObject = (JSONObject)JSON.toJSON(response); 329 JSONObject jsonObject = (JSONObject)JSON.toJSON(response);
330 - RedisUtil.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject); 330 + redisTemplate.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject);
331 } 331 }
332 332
333 /** 333 /**
@@ -364,7 +364,7 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -364,7 +364,7 @@ public class RedisGbPlayMsgListener implements MessageListener {
364 wvpResult.setMsg("timeout"); 364 wvpResult.setMsg("timeout");
365 errorCallback.handler(wvpResult); 365 errorCallback.handler(wvpResult);
366 }, userSetting.getPlatformPlayTimeout()); 366 }, userSetting.getPlatformPlayTimeout());
367 - RedisUtil.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject); 367 + redisTemplate.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject);
368 } 368 }
369 369
370 /** 370 /**
@@ -389,6 +389,6 @@ public class RedisGbPlayMsgListener implements MessageListener { @@ -389,6 +389,6 @@ public class RedisGbPlayMsgListener implements MessageListener {
389 callbacksForStartSendRtpStream.remove(key); 389 callbacksForStartSendRtpStream.remove(key);
390 callbacksForError.remove(key); 390 callbacksForError.remove(key);
391 }); 391 });
392 - RedisUtil.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject); 392 + redisTemplate.convertAndSend(WVP_PUSH_STREAM_KEY, jsonObject);
393 } 393 }
394 } 394 }
src/main/java/com/genersoft/iot/vmp/storager/impl/RedisCatchStorageImpl.java
@@ -23,6 +23,7 @@ import com.genersoft.iot.vmp.utils.redis.RedisUtil; @@ -23,6 +23,7 @@ import com.genersoft.iot.vmp.utils.redis.RedisUtil;
23 import org.slf4j.Logger; 23 import org.slf4j.Logger;
24 import org.slf4j.LoggerFactory; 24 import org.slf4j.LoggerFactory;
25 import org.springframework.beans.factory.annotation.Autowired; 25 import org.springframework.beans.factory.annotation.Autowired;
  26 +import org.springframework.data.redis.core.RedisTemplate;
26 import org.springframework.stereotype.Component; 27 import org.springframework.stereotype.Component;
27 28
28 import java.util.*; 29 import java.util.*;
@@ -39,14 +40,17 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -39,14 +40,17 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
39 @Autowired 40 @Autowired
40 private UserSetting userSetting; 41 private UserSetting userSetting;
41 42
  43 + @Autowired
  44 + private RedisTemplate<Object, Object> redisTemplate;
  45 +
42 @Override 46 @Override
43 public Long getCSEQ() { 47 public Long getCSEQ() {
44 String key = VideoManagerConstants.SIP_CSEQ_PREFIX + userSetting.getServerId(); 48 String key = VideoManagerConstants.SIP_CSEQ_PREFIX + userSetting.getServerId();
45 49
46 - long result = RedisUtil.incr(key, 1L);  
47 - if (result > Integer.MAX_VALUE) {  
48 - RedisUtil.set(key, 1);  
49 - result = 1; 50 + Long result = redisTemplate.opsForValue().increment(key, 1L);
  51 + if (result != null && result > Integer.MAX_VALUE) {
  52 + redisTemplate.opsForValue().set(key, 1);
  53 + result = 1L;
50 } 54 }
51 return result; 55 return result;
52 } 56 }
@@ -55,10 +59,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -55,10 +59,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
55 public Long getSN(String method) { 59 public Long getSN(String method) {
56 String key = VideoManagerConstants.SIP_SN_PREFIX + userSetting.getServerId() + "_" + method; 60 String key = VideoManagerConstants.SIP_SN_PREFIX + userSetting.getServerId() + "_" + method;
57 61
58 - long result = RedisUtil.incr(key, 1L);  
59 - if (result > Integer.MAX_VALUE) {  
60 - RedisUtil.set(key, 1);  
61 - result = 1; 62 + Long result = redisTemplate.opsForValue().increment(key, 1L);
  63 + if (result != null && result > Integer.MAX_VALUE) {
  64 + redisTemplate.opsForValue().set(key, 1);
  65 + result = 1L;
62 } 66 }
63 return result; 67 return result;
64 } 68 }
@@ -66,61 +70,58 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -66,61 +70,58 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
66 @Override 70 @Override
67 public void resetAllCSEQ() { 71 public void resetAllCSEQ() {
68 String scanKey = VideoManagerConstants.SIP_CSEQ_PREFIX + userSetting.getServerId() + "_*"; 72 String scanKey = VideoManagerConstants.SIP_CSEQ_PREFIX + userSetting.getServerId() + "_*";
69 - List<Object> keys = RedisUtil.scan(scanKey); 73 + List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
70 for (Object o : keys) { 74 for (Object o : keys) {
71 String key = (String) o; 75 String key = (String) o;
72 - RedisUtil.set(key, 1); 76 + redisTemplate.opsForValue().set(key, 1);
73 } 77 }
74 } 78 }
75 79
76 @Override 80 @Override
77 public void resetAllSN() { 81 public void resetAllSN() {
78 String scanKey = VideoManagerConstants.SIP_SN_PREFIX + userSetting.getServerId() + "_*"; 82 String scanKey = VideoManagerConstants.SIP_SN_PREFIX + userSetting.getServerId() + "_*";
79 - List<Object> keys = RedisUtil.scan(scanKey); 83 + List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
80 for (Object o : keys) { 84 for (Object o : keys) {
81 String key = (String) o; 85 String key = (String) o;
82 - RedisUtil.set(key, 1); 86 + redisTemplate.opsForValue().set(key, 1);
83 } 87 }
84 } 88 }
85 89
86 /** 90 /**
87 * 开始播放时将流存入redis 91 * 开始播放时将流存入redis
88 - *  
89 - * @return  
90 */ 92 */
91 @Override 93 @Override
92 public boolean startPlay(StreamInfo stream) { 94 public boolean startPlay(StreamInfo stream) {
93 95
94 - return RedisUtil.set(String.format("%S_%s_%s_%s_%s_%s", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(), 96 + redisTemplate.opsForValue().set(String.format("%S_%s_%s_%s_%s_%s", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(),
95 stream.getMediaServerId(), stream.getStream(), stream.getDeviceID(), stream.getChannelId()), 97 stream.getMediaServerId(), stream.getStream(), stream.getDeviceID(), stream.getChannelId()),
96 stream); 98 stream);
  99 + return true;
97 } 100 }
98 101
99 /** 102 /**
100 * 停止播放时从redis删除 103 * 停止播放时从redis删除
101 - *  
102 - * @return  
103 */ 104 */
104 @Override 105 @Override
105 public boolean stopPlay(StreamInfo streamInfo) { 106 public boolean stopPlay(StreamInfo streamInfo) {
106 if (streamInfo == null) { 107 if (streamInfo == null) {
107 return false; 108 return false;
108 } 109 }
109 - return RedisUtil.del(String.format("%S_%s_%s_%s_%s_%s", VideoManagerConstants.PLAYER_PREFIX, 110 + Boolean result = redisTemplate.delete(String.format("%S_%s_%s_%s_%s_%s", VideoManagerConstants.PLAYER_PREFIX,
110 userSetting.getServerId(), 111 userSetting.getServerId(),
111 streamInfo.getMediaServerId(), 112 streamInfo.getMediaServerId(),
112 streamInfo.getStream(), 113 streamInfo.getStream(),
113 streamInfo.getDeviceID(), 114 streamInfo.getDeviceID(),
114 streamInfo.getChannelId())); 115 streamInfo.getChannelId()));
  116 + return result != null && result;
115 } 117 }
116 118
117 /** 119 /**
118 * 查询播放列表 120 * 查询播放列表
119 - * @return  
120 */ 121 */
121 @Override 122 @Override
122 public StreamInfo queryPlay(StreamInfo streamInfo) { 123 public StreamInfo queryPlay(StreamInfo streamInfo) {
123 - return (StreamInfo)RedisUtil.get(String.format("%S_%s_%s_%s_%s_%s", 124 + return (StreamInfo)redisTemplate.opsForValue().get(String.format("%S_%s_%s_%s_%s_%s",
124 VideoManagerConstants.PLAYER_PREFIX, 125 VideoManagerConstants.PLAYER_PREFIX,
125 userSetting.getServerId(), 126 userSetting.getServerId(),
126 streamInfo.getMediaServerId(), 127 streamInfo.getMediaServerId(),
@@ -130,35 +131,35 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -130,35 +131,35 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
130 } 131 }
131 @Override 132 @Override
132 public StreamInfo queryPlayByStreamId(String streamId) { 133 public StreamInfo queryPlayByStreamId(String streamId) {
133 - List<Object> playLeys = RedisUtil.scan(String.format("%S_%s_*_%s_*", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(), streamId));  
134 - if (playLeys == null || playLeys.size() == 0) { 134 + List<Object> playLeys = RedisUtil.scan(redisTemplate, String.format("%S_%s_*_%s_*", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(), streamId));
  135 + if (playLeys.size() == 0) {
135 return null; 136 return null;
136 } 137 }
137 - return (StreamInfo)RedisUtil.get(playLeys.get(0).toString()); 138 + return (StreamInfo)redisTemplate.opsForValue().get(playLeys.get(0).toString());
138 } 139 }
139 140
140 @Override 141 @Override
141 public StreamInfo queryPlayByDevice(String deviceId, String channelId) { 142 public StreamInfo queryPlayByDevice(String deviceId, String channelId) {
142 - List<Object> playLeys = RedisUtil.scan(String.format("%S_%s_*_*_%s_%s", VideoManagerConstants.PLAYER_PREFIX, 143 + List<Object> playLeys = RedisUtil.scan(redisTemplate, String.format("%S_%s_*_*_%s_%s", VideoManagerConstants.PLAYER_PREFIX,
143 userSetting.getServerId(), 144 userSetting.getServerId(),
144 deviceId, 145 deviceId,
145 channelId)); 146 channelId));
146 - if (playLeys == null || playLeys.size() == 0) { 147 + if (playLeys.size() == 0) {
147 return null; 148 return null;
148 } 149 }
149 - return (StreamInfo)RedisUtil.get(playLeys.get(0).toString()); 150 + return (StreamInfo)redisTemplate.opsForValue().get(playLeys.get(0).toString());
150 } 151 }
151 152
152 @Override 153 @Override
153 public Map<String, StreamInfo> queryPlayByDeviceId(String deviceId) { 154 public Map<String, StreamInfo> queryPlayByDeviceId(String deviceId) {
154 Map<String, StreamInfo> streamInfos = new HashMap<>(); 155 Map<String, StreamInfo> streamInfos = new HashMap<>();
155 - List<Object> players = RedisUtil.scan(String.format("%S_%s_*_*_%s_*", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(),deviceId)); 156 + List<Object> players = RedisUtil.scan(redisTemplate, String.format("%S_%s_*_*_%s_*", VideoManagerConstants.PLAYER_PREFIX, userSetting.getServerId(),deviceId));
156 if (players.size() == 0) { 157 if (players.size() == 0) {
157 return streamInfos; 158 return streamInfos;
158 } 159 }
159 for (Object player : players) { 160 for (Object player : players) {
160 String key = (String) player; 161 String key = (String) player;
161 - StreamInfo streamInfo = JsonUtil.redisJsonToObject(key, StreamInfo.class); 162 + StreamInfo streamInfo = JsonUtil.redisJsonToObject(redisTemplate, key, StreamInfo.class);
162 if (Objects.isNull(streamInfo)) { 163 if (Objects.isNull(streamInfo)) {
163 continue; 164 continue;
164 } 165 }
@@ -170,23 +171,23 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -170,23 +171,23 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
170 171
171 @Override 172 @Override
172 public boolean startPlayback(StreamInfo stream, String callId) { 173 public boolean startPlayback(StreamInfo stream, String callId) {
173 - return RedisUtil.set(String.format("%S_%s_%s_%s_%s_%s_%s", VideoManagerConstants.PLAY_BLACK_PREFIX, 174 + redisTemplate.opsForValue().set(String.format("%S_%s_%s_%s_%s_%s_%s", VideoManagerConstants.PLAY_BLACK_PREFIX,
174 userSetting.getServerId(), stream.getMediaServerId(), stream.getDeviceID(), stream.getChannelId(), stream.getStream(), callId), stream); 175 userSetting.getServerId(), stream.getMediaServerId(), stream.getDeviceID(), stream.getChannelId(), stream.getStream(), callId), stream);
  176 + return true;
175 } 177 }
176 178
177 @Override 179 @Override
178 public boolean startDownload(StreamInfo stream, String callId) { 180 public boolean startDownload(StreamInfo stream, String callId) {
179 - boolean result;  
180 String key=String.format("%S_%s_%s_%s_%s_%s_%s", VideoManagerConstants.DOWNLOAD_PREFIX, 181 String key=String.format("%S_%s_%s_%s_%s_%s_%s", VideoManagerConstants.DOWNLOAD_PREFIX,
181 userSetting.getServerId(), stream.getMediaServerId(), stream.getDeviceID(), stream.getChannelId(), stream.getStream(), callId); 182 userSetting.getServerId(), stream.getMediaServerId(), stream.getDeviceID(), stream.getChannelId(), stream.getStream(), callId);
182 if (stream.getProgress() == 1) { 183 if (stream.getProgress() == 1) {
183 logger.debug("添加下载缓存==已完成下载=》{}",key); 184 logger.debug("添加下载缓存==已完成下载=》{}",key);
184 - result = RedisUtil.set(key, stream); 185 + redisTemplate.opsForValue().set(key, stream);
185 }else { 186 }else {
186 logger.debug("添加下载缓存==未完成下载=》{}",key); 187 logger.debug("添加下载缓存==未完成下载=》{}",key);
187 - result = RedisUtil.set(key, stream, 60*60); 188 + redisTemplate.opsForValue().set(key, stream, 60*60);
188 } 189 }
189 - return result; 190 + return true;
190 } 191 }
191 @Override 192 @Override
192 public boolean stopDownload(String deviceId, String channelId, String stream, String callId) { 193 public boolean stopDownload(String deviceId, String channelId, String stream, String callId) {
@@ -215,10 +216,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -215,10 +216,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
215 stream, 216 stream,
216 callId 217 callId
217 ); 218 );
218 - List<Object> scan = RedisUtil.scan(key); 219 + List<Object> scan = RedisUtil.scan(redisTemplate, key);
219 if (scan.size() > 0) { 220 if (scan.size() > 0) {
220 for (Object keyObj : scan) { 221 for (Object keyObj : scan) {
221 - RedisUtil.del((String) keyObj); 222 + redisTemplate.delete(keyObj);
222 } 223 }
223 } 224 }
224 return true; 225 return true;
@@ -251,10 +252,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -251,10 +252,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
251 stream, 252 stream,
252 callId 253 callId
253 ); 254 );
254 - List<Object> scan = RedisUtil.scan(key); 255 + List<Object> scan = RedisUtil.scan(redisTemplate, key);
255 if (scan.size() > 0) { 256 if (scan.size() > 0) {
256 for (Object keyObj : scan) { 257 for (Object keyObj : scan) {
257 - RedisUtil.del((String) keyObj); 258 + redisTemplate.delete(keyObj);
258 } 259 }
259 } 260 }
260 return true; 261 return true;
@@ -284,9 +285,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -284,9 +285,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
284 stream, 285 stream,
285 callId 286 callId
286 ); 287 );
287 - List<Object> streamInfoScan = RedisUtil.scan(key); 288 + List<Object> streamInfoScan = RedisUtil.scan(redisTemplate, key);
288 if (streamInfoScan.size() > 0) { 289 if (streamInfoScan.size() > 0) {
289 - return (StreamInfo) RedisUtil.get((String) streamInfoScan.get(0)); 290 + return (StreamInfo) redisTemplate.opsForValue().get(streamInfoScan.get(0));
290 }else { 291 }else {
291 return null; 292 return null;
292 } 293 }
@@ -316,59 +317,59 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -316,59 +317,59 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
316 stream, 317 stream,
317 callId 318 callId
318 ); 319 );
319 - List<Object> streamInfoScan = RedisUtil.scan(key); 320 + List<Object> streamInfoScan = RedisUtil.scan(redisTemplate, key);
320 return (String) streamInfoScan.get(0); 321 return (String) streamInfoScan.get(0);
321 } 322 }
322 323
323 @Override 324 @Override
324 public void updatePlatformCatchInfo(ParentPlatformCatch parentPlatformCatch) { 325 public void updatePlatformCatchInfo(ParentPlatformCatch parentPlatformCatch) {
325 String key = VideoManagerConstants.PLATFORM_CATCH_PREFIX + userSetting.getServerId() + "_" + parentPlatformCatch.getId(); 326 String key = VideoManagerConstants.PLATFORM_CATCH_PREFIX + userSetting.getServerId() + "_" + parentPlatformCatch.getId();
326 - RedisUtil.set(key, parentPlatformCatch); 327 + redisTemplate.opsForValue().set(key, parentPlatformCatch);
327 } 328 }
328 329
329 @Override 330 @Override
330 public ParentPlatformCatch queryPlatformCatchInfo(String platformGbId) { 331 public ParentPlatformCatch queryPlatformCatchInfo(String platformGbId) {
331 - return (ParentPlatformCatch)RedisUtil.get(VideoManagerConstants.PLATFORM_CATCH_PREFIX + userSetting.getServerId() + "_" + platformGbId); 332 + return (ParentPlatformCatch)redisTemplate.opsForValue().get(VideoManagerConstants.PLATFORM_CATCH_PREFIX + userSetting.getServerId() + "_" + platformGbId);
332 } 333 }
333 334
334 @Override 335 @Override
335 public void delPlatformCatchInfo(String platformGbId) { 336 public void delPlatformCatchInfo(String platformGbId) {
336 - RedisUtil.del(VideoManagerConstants.PLATFORM_CATCH_PREFIX + userSetting.getServerId() + "_" + platformGbId); 337 + redisTemplate.delete(VideoManagerConstants.PLATFORM_CATCH_PREFIX + userSetting.getServerId() + "_" + platformGbId);
337 } 338 }
338 339
339 @Override 340 @Override
340 public void delPlatformKeepalive(String platformGbId) { 341 public void delPlatformKeepalive(String platformGbId) {
341 - RedisUtil.del(VideoManagerConstants.PLATFORM_KEEPALIVE_PREFIX + userSetting.getServerId() + "_" + platformGbId); 342 + redisTemplate.delete(VideoManagerConstants.PLATFORM_KEEPALIVE_PREFIX + userSetting.getServerId() + "_" + platformGbId);
342 } 343 }
343 344
344 @Override 345 @Override
345 public void delPlatformRegister(String platformGbId) { 346 public void delPlatformRegister(String platformGbId) {
346 - RedisUtil.del(VideoManagerConstants.PLATFORM_REGISTER_PREFIX + userSetting.getServerId() + "_" + platformGbId); 347 + redisTemplate.delete(VideoManagerConstants.PLATFORM_REGISTER_PREFIX + userSetting.getServerId() + "_" + platformGbId);
347 } 348 }
348 349
349 350
350 @Override 351 @Override
351 public void updatePlatformRegisterInfo(String callId, PlatformRegisterInfo platformRegisterInfo) { 352 public void updatePlatformRegisterInfo(String callId, PlatformRegisterInfo platformRegisterInfo) {
352 String key = VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + callId; 353 String key = VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + callId;
353 - RedisUtil.set(key, platformRegisterInfo, 30); 354 + redisTemplate.opsForValue().set(key, platformRegisterInfo, 30);
354 } 355 }
355 356
356 357
357 @Override 358 @Override
358 public PlatformRegisterInfo queryPlatformRegisterInfo(String callId) { 359 public PlatformRegisterInfo queryPlatformRegisterInfo(String callId) {
359 - return (PlatformRegisterInfo)RedisUtil.get(VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + callId); 360 + return (PlatformRegisterInfo)redisTemplate.opsForValue().get(VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + callId);
360 } 361 }
361 362
362 @Override 363 @Override
363 public void delPlatformRegisterInfo(String callId) { 364 public void delPlatformRegisterInfo(String callId) {
364 - RedisUtil.del(VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + callId); 365 + redisTemplate.delete(VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + callId);
365 } 366 }
366 367
367 @Override 368 @Override
368 public void cleanPlatformRegisterInfos() { 369 public void cleanPlatformRegisterInfos() {
369 - List regInfos = RedisUtil.scan(VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + "*"); 370 + List regInfos = RedisUtil.scan(redisTemplate, VideoManagerConstants.PLATFORM_REGISTER_INFO_PREFIX + userSetting.getServerId() + "_" + "*");
370 for (Object key : regInfos) { 371 for (Object key : regInfos) {
371 - RedisUtil.del(key.toString()); 372 + redisTemplate.delete(key.toString());
372 } 373 }
373 } 374 }
374 375
@@ -382,7 +383,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -382,7 +383,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
382 + sendRtpItem.getChannelId() + "_" 383 + sendRtpItem.getChannelId() + "_"
383 + sendRtpItem.getStreamId() + "_" 384 + sendRtpItem.getStreamId() + "_"
384 + sendRtpItem.getCallId(); 385 + sendRtpItem.getCallId();
385 - RedisUtil.set(key, sendRtpItem); 386 + redisTemplate.opsForValue().set(key, sendRtpItem);
386 } 387 }
387 388
388 @Override 389 @Override
@@ -405,9 +406,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -405,9 +406,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
405 + channelId + "_" 406 + channelId + "_"
406 + streamId + "_" 407 + streamId + "_"
407 + callId; 408 + callId;
408 - List<Object> scan = RedisUtil.scan(key); 409 + List<Object> scan = RedisUtil.scan(redisTemplate, key);
409 if (scan.size() > 0) { 410 if (scan.size() > 0) {
410 - return (SendRtpItem)RedisUtil.get((String)scan.get(0)); 411 + return (SendRtpItem)redisTemplate.opsForValue().get(scan.get(0));
411 }else { 412 }else {
412 return null; 413 return null;
413 } 414 }
@@ -427,10 +428,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -427,10 +428,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
427 + channelId + "_" 428 + channelId + "_"
428 + streamId + "_" 429 + streamId + "_"
429 + callId; 430 + callId;
430 - List<Object> scan = RedisUtil.scan(key); 431 + List<Object> scan = RedisUtil.scan(redisTemplate, key);
431 List<SendRtpItem> result = new ArrayList<>(); 432 List<SendRtpItem> result = new ArrayList<>();
432 for (Object o : scan) { 433 for (Object o : scan) {
433 - result.add((SendRtpItem) RedisUtil.get((String) o)); 434 + result.add((SendRtpItem) redisTemplate.opsForValue().get(o));
434 } 435 }
435 return result; 436 return result;
436 } 437 }
@@ -449,10 +450,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -449,10 +450,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
449 + channelId + "_" 450 + channelId + "_"
450 + stream + "_" 451 + stream + "_"
451 + callId; 452 + callId;
452 - List<Object> scan = RedisUtil.scan(key); 453 + List<Object> scan = RedisUtil.scan(redisTemplate, key);
453 List<SendRtpItem> result = new ArrayList<>(); 454 List<SendRtpItem> result = new ArrayList<>();
454 for (Object o : scan) { 455 for (Object o : scan) {
455 - result.add((SendRtpItem) RedisUtil.get((String) o)); 456 + result.add((SendRtpItem) redisTemplate.opsForValue().get(o));
456 } 457 }
457 return result; 458 return result;
458 } 459 }
@@ -465,12 +466,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -465,12 +466,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
465 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX 466 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX
466 + userSetting.getServerId() + "_*_" 467 + userSetting.getServerId() + "_*_"
467 + platformGbId + "_*" + "_*" + "_*"; 468 + platformGbId + "_*" + "_*" + "_*";
468 - List<Object> queryResult = RedisUtil.scan(key); 469 + List<Object> queryResult = RedisUtil.scan(redisTemplate, key);
469 List<SendRtpItem> result= new ArrayList<>(); 470 List<SendRtpItem> result= new ArrayList<>();
470 471
471 for (Object o : queryResult) { 472 for (Object o : queryResult) {
472 String keyItem = (String) o; 473 String keyItem = (String) o;
473 - result.add((SendRtpItem) RedisUtil.get(keyItem)); 474 + result.add((SendRtpItem) redisTemplate.opsForValue().get(keyItem));
474 } 475 }
475 476
476 return result; 477 return result;
@@ -478,8 +479,6 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -478,8 +479,6 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
478 479
479 /** 480 /**
480 * 删除RTP推送信息缓存 481 * 删除RTP推送信息缓存
481 - * @param platformGbId  
482 - * @param channelId  
483 */ 482 */
484 @Override 483 @Override
485 public void deleteSendRTPServer(String platformGbId, String channelId, String callId, String streamId) { 484 public void deleteSendRTPServer(String platformGbId, String channelId, String callId, String streamId) {
@@ -495,10 +494,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -495,10 +494,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
495 + channelId + "_" 494 + channelId + "_"
496 + streamId + "_" 495 + streamId + "_"
497 + callId; 496 + callId;
498 - List<Object> scan = RedisUtil.scan(key); 497 + List<Object> scan = RedisUtil.scan(redisTemplate, key);
499 if (scan.size() > 0) { 498 if (scan.size() > 0) {
500 for (Object keyStr : scan) { 499 for (Object keyStr : scan) {
501 - RedisUtil.del((String)keyStr); 500 + redisTemplate.delete(keyStr);
502 } 501 }
503 } 502 }
504 } 503 }
@@ -507,12 +506,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -507,12 +506,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
507 public List<SendRtpItem> queryAllSendRTPServer() { 506 public List<SendRtpItem> queryAllSendRTPServer() {
508 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX 507 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX
509 + userSetting.getServerId() + "_*"; 508 + userSetting.getServerId() + "_*";
510 - List<Object> queryResult = RedisUtil.scan(key); 509 + List<Object> queryResult = RedisUtil.scan(redisTemplate, key);
511 List<SendRtpItem> result= new ArrayList<>(); 510 List<SendRtpItem> result= new ArrayList<>();
512 511
513 for (Object o : queryResult) { 512 for (Object o : queryResult) {
514 String keyItem = (String) o; 513 String keyItem = (String) o;
515 - result.add((SendRtpItem) RedisUtil.get(keyItem)); 514 + result.add((SendRtpItem) redisTemplate.opsForValue().get(keyItem));
516 } 515 }
517 516
518 return result; 517 return result;
@@ -520,47 +519,42 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -520,47 +519,42 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
520 519
521 /** 520 /**
522 * 查询某个通道是否存在上级点播(RTP推送) 521 * 查询某个通道是否存在上级点播(RTP推送)
523 - * @param channelId  
524 */ 522 */
525 @Override 523 @Override
526 public boolean isChannelSendingRTP(String channelId) { 524 public boolean isChannelSendingRTP(String channelId) {
527 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX 525 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX
528 + userSetting.getServerId() + "_*_*_" 526 + userSetting.getServerId() + "_*_*_"
529 + channelId + "*_" + "*_"; 527 + channelId + "*_" + "*_";
530 - List<Object> RtpStreams = RedisUtil.scan(key);  
531 - if (RtpStreams.size() > 0) {  
532 - return true;  
533 - } else {  
534 - return false;  
535 - } 528 + List<Object> RtpStreams = RedisUtil.scan(redisTemplate, key);
  529 + return RtpStreams.size() > 0;
536 } 530 }
537 531
538 @Override 532 @Override
539 public void clearCatchByDeviceId(String deviceId) { 533 public void clearCatchByDeviceId(String deviceId) {
540 - List<Object> playLeys = RedisUtil.scan(String.format("%S_%s_*_%s_*", VideoManagerConstants.PLAYER_PREFIX, 534 + List<Object> playLeys = RedisUtil.scan(redisTemplate, String.format("%S_%s_*_%s_*", VideoManagerConstants.PLAYER_PREFIX,
541 userSetting.getServerId(), 535 userSetting.getServerId(),
542 deviceId)); 536 deviceId));
543 if (playLeys.size() > 0) { 537 if (playLeys.size() > 0) {
544 for (Object key : playLeys) { 538 for (Object key : playLeys) {
545 - RedisUtil.del(key.toString()); 539 + redisTemplate.delete(key.toString());
546 } 540 }
547 } 541 }
548 542
549 - List<Object> playBackers = RedisUtil.scan(String.format("%S_%s_*_%s_*_*_*", VideoManagerConstants.PLAY_BLACK_PREFIX, 543 + List<Object> playBackers = RedisUtil.scan(redisTemplate, String.format("%S_%s_*_%s_*_*_*", VideoManagerConstants.PLAY_BLACK_PREFIX,
550 userSetting.getServerId(), 544 userSetting.getServerId(),
551 deviceId)); 545 deviceId));
552 if (playBackers.size() > 0) { 546 if (playBackers.size() > 0) {
553 for (Object key : playBackers) { 547 for (Object key : playBackers) {
554 - RedisUtil.del(key.toString()); 548 + redisTemplate.delete(key.toString());
555 } 549 }
556 } 550 }
557 551
558 - List<Object> deviceCache = RedisUtil.scan(String.format("%S%s_%s", VideoManagerConstants.DEVICE_PREFIX, 552 + List<Object> deviceCache = RedisUtil.scan(redisTemplate, String.format("%S%s_%s", VideoManagerConstants.DEVICE_PREFIX,
559 userSetting.getServerId(), 553 userSetting.getServerId(),
560 deviceId)); 554 deviceId));
561 if (deviceCache.size() > 0) { 555 if (deviceCache.size() > 0) {
562 for (Object key : deviceCache) { 556 for (Object key : deviceCache) {
563 - RedisUtil.del(key.toString()); 557 + redisTemplate.delete(key.toString());
564 } 558 }
565 } 559 }
566 } 560 }
@@ -568,14 +562,14 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -568,14 +562,14 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
568 @Override 562 @Override
569 public void updateWVPInfo(JSONObject jsonObject, int time) { 563 public void updateWVPInfo(JSONObject jsonObject, int time) {
570 String key = VideoManagerConstants.WVP_SERVER_PREFIX + userSetting.getServerId(); 564 String key = VideoManagerConstants.WVP_SERVER_PREFIX + userSetting.getServerId();
571 - RedisUtil.set(key, jsonObject, time); 565 + redisTemplate.opsForValue().set(key, jsonObject, time);
572 } 566 }
573 567
574 @Override 568 @Override
575 public void sendStreamChangeMsg(String type, JSONObject jsonObject) { 569 public void sendStreamChangeMsg(String type, JSONObject jsonObject) {
576 String key = VideoManagerConstants.WVP_MSG_STREAM_CHANGE_PREFIX + type; 570 String key = VideoManagerConstants.WVP_MSG_STREAM_CHANGE_PREFIX + type;
577 logger.info("[redis 流变化事件] {}: {}", key, jsonObject.toString()); 571 logger.info("[redis 流变化事件] {}: {}", key, jsonObject.toString());
578 - RedisUtil.convertAndSend(key, jsonObject); 572 + redisTemplate.convertAndSend(key, jsonObject);
579 } 573 }
580 574
581 @Override 575 @Override
@@ -586,13 +580,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -586,13 +580,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
586 if (streamAuthorityInfo != null) { 580 if (streamAuthorityInfo != null) {
587 onStreamChangedHookParam.setCallId(streamAuthorityInfo.getCallId()); 581 onStreamChangedHookParam.setCallId(streamAuthorityInfo.getCallId());
588 } 582 }
589 - RedisUtil.set(key, onStreamChangedHookParam); 583 + redisTemplate.opsForValue().set(key, onStreamChangedHookParam);
590 } 584 }
591 585
592 @Override 586 @Override
593 public void removeStream(String mediaServerId, String type, String app, String streamId) { 587 public void removeStream(String mediaServerId, String type, String app, String streamId) {
594 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_" + app + "_" + streamId + "_" + mediaServerId; 588 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_" + app + "_" + streamId + "_" + mediaServerId;
595 - RedisUtil.del(key); 589 + redisTemplate.delete(key);
596 } 590 }
597 591
598 @Override 592 @Override
@@ -619,9 +613,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -619,9 +613,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
619 stream, 613 stream,
620 callId 614 callId
621 ); 615 );
622 - List<Object> streamInfoScan = RedisUtil.scan2(key); 616 + List<Object> streamInfoScan = RedisUtil.scan(redisTemplate, key);
623 if (streamInfoScan.size() > 0) { 617 if (streamInfoScan.size() > 0) {
624 - return (StreamInfo) RedisUtil.get((String) streamInfoScan.get(0)); 618 + return (StreamInfo) redisTemplate.opsForValue().get(streamInfoScan.get(0));
625 }else { 619 }else {
626 return null; 620 return null;
627 } 621 }
@@ -630,15 +624,15 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -630,15 +624,15 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
630 @Override 624 @Override
631 public ThirdPartyGB queryMemberNoGBId(String queryKey) { 625 public ThirdPartyGB queryMemberNoGBId(String queryKey) {
632 String key = VideoManagerConstants.WVP_STREAM_GB_ID_PREFIX + queryKey; 626 String key = VideoManagerConstants.WVP_STREAM_GB_ID_PREFIX + queryKey;
633 - return JsonUtil.redisJsonToObject(key, ThirdPartyGB.class); 627 + return JsonUtil.redisJsonToObject(redisTemplate, key, ThirdPartyGB.class);
634 } 628 }
635 629
636 @Override 630 @Override
637 public void removeStream(String mediaServerId, String type) { 631 public void removeStream(String mediaServerId, String type) {
638 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_*_*_" + mediaServerId; 632 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_*_*_" + mediaServerId;
639 - List<Object> streams = RedisUtil.scan(key); 633 + List<Object> streams = RedisUtil.scan(redisTemplate, key);
640 for (Object stream : streams) { 634 for (Object stream : streams) {
641 - RedisUtil.del((String) stream); 635 + redisTemplate.delete(stream);
642 } 636 }
643 } 637 }
644 638
@@ -646,9 +640,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -646,9 +640,9 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
646 public List<OnStreamChangedHookParam> getStreams(String mediaServerId, String type) { 640 public List<OnStreamChangedHookParam> getStreams(String mediaServerId, String type) {
647 List<OnStreamChangedHookParam> result = new ArrayList<>(); 641 List<OnStreamChangedHookParam> result = new ArrayList<>();
648 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_*_*_" + mediaServerId; 642 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_" + type + "_*_*_" + mediaServerId;
649 - List<Object> streams = RedisUtil.scan(key); 643 + List<Object> streams = RedisUtil.scan(redisTemplate, key);
650 for (Object stream : streams) { 644 for (Object stream : streams) {
651 - OnStreamChangedHookParam onStreamChangedHookParam = (OnStreamChangedHookParam)RedisUtil.get((String) stream); 645 + OnStreamChangedHookParam onStreamChangedHookParam = (OnStreamChangedHookParam)redisTemplate.opsForValue().get(stream);
652 result.add(onStreamChangedHookParam); 646 result.add(onStreamChangedHookParam);
653 } 647 }
654 return result; 648 return result;
@@ -657,21 +651,21 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -657,21 +651,21 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
657 @Override 651 @Override
658 public void updateDevice(Device device) { 652 public void updateDevice(Device device) {
659 String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + device.getDeviceId(); 653 String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + device.getDeviceId();
660 - RedisUtil.set(key, device); 654 + redisTemplate.opsForValue().set(key, device);
661 } 655 }
662 656
663 @Override 657 @Override
664 public void removeDevice(String deviceId) { 658 public void removeDevice(String deviceId) {
665 String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + deviceId; 659 String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + deviceId;
666 - RedisUtil.del(key); 660 + redisTemplate.delete(key);
667 } 661 }
668 662
669 @Override 663 @Override
670 public void removeAllDevice() { 664 public void removeAllDevice() {
671 String scanKey = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_*"; 665 String scanKey = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_*";
672 - List<Object> keys = RedisUtil.scan(scanKey); 666 + List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
673 for (Object key : keys) { 667 for (Object key : keys) {
674 - RedisUtil.del((String) key); 668 + redisTemplate.delete(key);
675 } 669 }
676 } 670 }
677 671
@@ -679,12 +673,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -679,12 +673,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
679 public List<Device> getAllDevices() { 673 public List<Device> getAllDevices() {
680 String scanKey = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_*"; 674 String scanKey = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_*";
681 List<Device> result = new ArrayList<>(); 675 List<Device> result = new ArrayList<>();
682 - List<Object> keys = RedisUtil.scan(scanKey); 676 + List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
683 for (Object o : keys) { 677 for (Object o : keys) {
684 String key = (String) o; 678 String key = (String) o;
685 - Device device = JsonUtil.redisJsonToObject(key, Device.class); 679 + Device device = JsonUtil.redisJsonToObject(redisTemplate, key, Device.class);
686 if (Objects.nonNull(device)) { // 只取没有存过得 680 if (Objects.nonNull(device)) { // 只取没有存过得
687 - result.add(JsonUtil.redisJsonToObject(key, Device.class)); 681 + result.add(JsonUtil.redisJsonToObject(redisTemplate, key, Device.class));
688 } 682 }
689 } 683 }
690 684
@@ -694,31 +688,31 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -694,31 +688,31 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
694 @Override 688 @Override
695 public Device getDevice(String deviceId) { 689 public Device getDevice(String deviceId) {
696 String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + deviceId; 690 String key = VideoManagerConstants.DEVICE_PREFIX + userSetting.getServerId() + "_" + deviceId;
697 - return JsonUtil.redisJsonToObject(key, Device.class); 691 + return JsonUtil.redisJsonToObject(redisTemplate, key, Device.class);
698 } 692 }
699 693
700 @Override 694 @Override
701 public void updateGpsMsgInfo(GPSMsgInfo gpsMsgInfo) { 695 public void updateGpsMsgInfo(GPSMsgInfo gpsMsgInfo) {
702 String key = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_" + gpsMsgInfo.getId(); 696 String key = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_" + gpsMsgInfo.getId();
703 - RedisUtil.set(key, gpsMsgInfo, 60); // 默认GPS消息保存1分钟 697 + redisTemplate.opsForValue().set(key, gpsMsgInfo, 60); // 默认GPS消息保存1分钟
704 } 698 }
705 699
706 @Override 700 @Override
707 public GPSMsgInfo getGpsMsgInfo(String gbId) { 701 public GPSMsgInfo getGpsMsgInfo(String gbId) {
708 String key = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_" + gbId; 702 String key = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_" + gbId;
709 - return JsonUtil.redisJsonToObject(key, GPSMsgInfo.class); 703 + return JsonUtil.redisJsonToObject(redisTemplate, key, GPSMsgInfo.class);
710 } 704 }
711 705
712 @Override 706 @Override
713 public List<GPSMsgInfo> getAllGpsMsgInfo() { 707 public List<GPSMsgInfo> getAllGpsMsgInfo() {
714 String scanKey = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_*"; 708 String scanKey = VideoManagerConstants.WVP_STREAM_GPS_MSG_PREFIX + userSetting.getServerId() + "_*";
715 List<GPSMsgInfo> result = new ArrayList<>(); 709 List<GPSMsgInfo> result = new ArrayList<>();
716 - List<Object> keys = RedisUtil.scan(scanKey); 710 + List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
717 for (Object o : keys) { 711 for (Object o : keys) {
718 String key = (String) o; 712 String key = (String) o;
719 - GPSMsgInfo gpsMsgInfo = JsonUtil.redisJsonToObject(key, GPSMsgInfo.class); 713 + GPSMsgInfo gpsMsgInfo = JsonUtil.redisJsonToObject(redisTemplate, key, GPSMsgInfo.class);
720 if (Objects.nonNull(gpsMsgInfo) && !gpsMsgInfo.isStored()) { // 只取没有存过得 714 if (Objects.nonNull(gpsMsgInfo) && !gpsMsgInfo.isStored()) { // 只取没有存过得
721 - result.add(JsonUtil.redisJsonToObject(key, GPSMsgInfo.class)); 715 + result.add(JsonUtil.redisJsonToObject(redisTemplate, key, GPSMsgInfo.class));
722 } 716 }
723 } 717 }
724 718
@@ -728,19 +722,19 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -728,19 +722,19 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
728 @Override 722 @Override
729 public void updateStreamAuthorityInfo(String app, String stream, StreamAuthorityInfo streamAuthorityInfo) { 723 public void updateStreamAuthorityInfo(String app, String stream, StreamAuthorityInfo streamAuthorityInfo) {
730 String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream; 724 String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream;
731 - RedisUtil.set(key, streamAuthorityInfo); 725 + redisTemplate.opsForValue().set(key, streamAuthorityInfo);
732 } 726 }
733 727
734 @Override 728 @Override
735 public void removeStreamAuthorityInfo(String app, String stream) { 729 public void removeStreamAuthorityInfo(String app, String stream) {
736 String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream ; 730 String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream ;
737 - RedisUtil.del(key); 731 + redisTemplate.delete(key);
738 } 732 }
739 733
740 @Override 734 @Override
741 public StreamAuthorityInfo getStreamAuthorityInfo(String app, String stream) { 735 public StreamAuthorityInfo getStreamAuthorityInfo(String app, String stream) {
742 String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream ; 736 String key = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_" + app+ "_" + stream ;
743 - return JsonUtil.redisJsonToObject(key, StreamAuthorityInfo.class); 737 + return JsonUtil.redisJsonToObject(redisTemplate, key, StreamAuthorityInfo.class);
744 738
745 } 739 }
746 740
@@ -748,10 +742,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -748,10 +742,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
748 public List<StreamAuthorityInfo> getAllStreamAuthorityInfo() { 742 public List<StreamAuthorityInfo> getAllStreamAuthorityInfo() {
749 String scanKey = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_*_*" ; 743 String scanKey = VideoManagerConstants.MEDIA_STREAM_AUTHORITY + userSetting.getServerId() + "_*_*" ;
750 List<StreamAuthorityInfo> result = new ArrayList<>(); 744 List<StreamAuthorityInfo> result = new ArrayList<>();
751 - List<Object> keys = RedisUtil.scan(scanKey); 745 + List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
752 for (Object o : keys) { 746 for (Object o : keys) {
753 String key = (String) o; 747 String key = (String) o;
754 - result.add(JsonUtil.redisJsonToObject(key, StreamAuthorityInfo.class)); 748 + result.add(JsonUtil.redisJsonToObject(redisTemplate, key, StreamAuthorityInfo.class));
755 } 749 }
756 return result; 750 return result;
757 } 751 }
@@ -762,10 +756,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -762,10 +756,10 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
762 String scanKey = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_*_" + app + "_" + streamId + "_" + mediaServerId; 756 String scanKey = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_*_" + app + "_" + streamId + "_" + mediaServerId;
763 757
764 OnStreamChangedHookParam result = null; 758 OnStreamChangedHookParam result = null;
765 - List<Object> keys = RedisUtil.scan(scanKey); 759 + List<Object> keys = RedisUtil.scan(redisTemplate, scanKey);
766 if (keys.size() > 0) { 760 if (keys.size() > 0) {
767 String key = (String) keys.get(0); 761 String key = (String) keys.get(0);
768 - result = JsonUtil.redisJsonToObject(key, OnStreamChangedHookParam.class); 762 + result = JsonUtil.redisJsonToObject(redisTemplate, key, OnStreamChangedHookParam.class);
769 } 763 }
770 764
771 return result; 765 return result;
@@ -776,12 +770,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -776,12 +770,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
776 String key = VideoManagerConstants.SYSTEM_INFO_CPU_PREFIX + userSetting.getServerId(); 770 String key = VideoManagerConstants.SYSTEM_INFO_CPU_PREFIX + userSetting.getServerId();
777 Map<String, String> infoMap = new HashMap<>(); 771 Map<String, String> infoMap = new HashMap<>();
778 infoMap.put("time", DateUtil.getNow()); 772 infoMap.put("time", DateUtil.getNow());
779 - infoMap.put("data", cpuInfo + "");  
780 - RedisUtil.lSet(key, infoMap); 773 + infoMap.put("data", String.valueOf(cpuInfo));
  774 + redisTemplate.opsForList().rightPush(key, infoMap);
781 // 每秒一个,最多只存30个 775 // 每秒一个,最多只存30个
782 - if (RedisUtil.lGetListSize(key) >= 30) {  
783 - for (int i = 0; i < RedisUtil.lGetListSize(key) - 30; i++) {  
784 - RedisUtil.lLeftPop(key); 776 + Long size = redisTemplate.opsForList().size(key);
  777 + if (size != null && size >= 30) {
  778 + for (int i = 0; i < size - 30; i++) {
  779 + redisTemplate.opsForList().leftPop(key);
785 } 780 }
786 } 781 }
787 } 782 }
@@ -791,12 +786,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -791,12 +786,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
791 String key = VideoManagerConstants.SYSTEM_INFO_MEM_PREFIX + userSetting.getServerId(); 786 String key = VideoManagerConstants.SYSTEM_INFO_MEM_PREFIX + userSetting.getServerId();
792 Map<String, String> infoMap = new HashMap<>(); 787 Map<String, String> infoMap = new HashMap<>();
793 infoMap.put("time", DateUtil.getNow()); 788 infoMap.put("time", DateUtil.getNow());
794 - infoMap.put("data", memInfo + "");  
795 - RedisUtil.lSet(key, infoMap); 789 + infoMap.put("data", String.valueOf(memInfo));
  790 + redisTemplate.opsForList().rightPush(key, infoMap);
796 // 每秒一个,最多只存30个 791 // 每秒一个,最多只存30个
797 - if (RedisUtil.lGetListSize(key) >= 30) {  
798 - for (int i = 0; i < RedisUtil.lGetListSize(key) - 30; i++) {  
799 - RedisUtil.lLeftPop(key); 792 + Long size = redisTemplate.opsForList().size(key);
  793 + if (size != null && size >= 30) {
  794 + for (int i = 0; i < size - 30; i++) {
  795 + redisTemplate.opsForList().leftPop(key);
800 } 796 }
801 } 797 }
802 } 798 }
@@ -809,11 +805,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -809,11 +805,12 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
809 for (String netKey : networkInterfaces.keySet()) { 805 for (String netKey : networkInterfaces.keySet()) {
810 infoMap.put(netKey, networkInterfaces.get(netKey)); 806 infoMap.put(netKey, networkInterfaces.get(netKey));
811 } 807 }
812 - RedisUtil.lSet(key, infoMap); 808 + redisTemplate.opsForList().rightPush(key, infoMap);
813 // 每秒一个,最多只存30个 809 // 每秒一个,最多只存30个
814 - if (RedisUtil.lGetListSize(key) >= 30) {  
815 - for (int i = 0; i < RedisUtil.lGetListSize(key) - 30; i++) {  
816 - RedisUtil.lLeftPop(key); 810 + Long size = redisTemplate.opsForList().size(key);
  811 + if (size != null && size >= 30) {
  812 + for (int i = 0; i < size - 30; i++) {
  813 + redisTemplate.opsForList().leftPop(key);
817 } 814 }
818 } 815 }
819 } 816 }
@@ -822,7 +819,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -822,7 +819,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
822 public void addDiskInfo(List<Map<String, Object>> diskInfo) { 819 public void addDiskInfo(List<Map<String, Object>> diskInfo) {
823 820
824 String key = VideoManagerConstants.SYSTEM_INFO_DISK_PREFIX + userSetting.getServerId(); 821 String key = VideoManagerConstants.SYSTEM_INFO_DISK_PREFIX + userSetting.getServerId();
825 - RedisUtil.set(key, diskInfo); 822 + redisTemplate.opsForValue().set(key, diskInfo);
826 } 823 }
827 824
828 @Override 825 @Override
@@ -832,11 +829,11 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -832,11 +829,11 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
832 String netKey = VideoManagerConstants.SYSTEM_INFO_NET_PREFIX + userSetting.getServerId(); 829 String netKey = VideoManagerConstants.SYSTEM_INFO_NET_PREFIX + userSetting.getServerId();
833 String diskKey = VideoManagerConstants.SYSTEM_INFO_DISK_PREFIX + userSetting.getServerId(); 830 String diskKey = VideoManagerConstants.SYSTEM_INFO_DISK_PREFIX + userSetting.getServerId();
834 SystemAllInfo systemAllInfo = new SystemAllInfo(); 831 SystemAllInfo systemAllInfo = new SystemAllInfo();
835 - systemAllInfo.setCpu(RedisUtil.lGet(cpuKey, 0, -1));  
836 - systemAllInfo.setMem(RedisUtil.lGet(memKey, 0, -1));  
837 - systemAllInfo.setNet(RedisUtil.lGet(netKey, 0, -1)); 832 + systemAllInfo.setCpu(redisTemplate.opsForList().range(cpuKey, 0, -1));
  833 + systemAllInfo.setMem(redisTemplate.opsForList().range(memKey, 0, -1));
  834 + systemAllInfo.setNet(redisTemplate.opsForList().range(netKey, 0, -1));
838 835
839 - systemAllInfo.setDisk(RedisUtil.get(diskKey)); 836 + systemAllInfo.setDisk(redisTemplate.opsForValue().get(diskKey));
840 systemAllInfo.setNetTotal(SystemInfoUtils.getNetworkTotal()); 837 systemAllInfo.setNetTotal(SystemInfoUtils.getNetworkTotal());
841 return systemAllInfo; 838 return systemAllInfo;
842 } 839 }
@@ -845,14 +842,14 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -845,14 +842,14 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
845 public void sendMobilePositionMsg(JSONObject jsonObject) { 842 public void sendMobilePositionMsg(JSONObject jsonObject) {
846 String key = VideoManagerConstants.VM_MSG_SUBSCRIBE_MOBILE_POSITION; 843 String key = VideoManagerConstants.VM_MSG_SUBSCRIBE_MOBILE_POSITION;
847 logger.info("[redis发送通知] 移动位置 {}: {}", key, jsonObject.toString()); 844 logger.info("[redis发送通知] 移动位置 {}: {}", key, jsonObject.toString());
848 - RedisUtil.convertAndSend(key, jsonObject); 845 + redisTemplate.convertAndSend(key, jsonObject);
849 } 846 }
850 847
851 @Override 848 @Override
852 public void sendStreamPushRequestedMsg(MessageForPushChannel msg) { 849 public void sendStreamPushRequestedMsg(MessageForPushChannel msg) {
853 String key = VideoManagerConstants.VM_MSG_STREAM_PUSH_REQUESTED; 850 String key = VideoManagerConstants.VM_MSG_STREAM_PUSH_REQUESTED;
854 logger.info("[redis发送通知] 推流被请求 {}: {}/{}", key, msg.getApp(), msg.getStream()); 851 logger.info("[redis发送通知] 推流被请求 {}: {}/{}", key, msg.getApp(), msg.getStream());
855 - RedisUtil.convertAndSend(key, (JSONObject)JSON.toJSON(msg)); 852 + redisTemplate.convertAndSend(key, JSON.toJSON(msg));
856 } 853 }
857 854
858 @Override 855 @Override
@@ -860,7 +857,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -860,7 +857,7 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
860 // 此消息用于对接第三方服务下级来的消息内容 857 // 此消息用于对接第三方服务下级来的消息内容
861 String key = VideoManagerConstants.VM_MSG_SUBSCRIBE_ALARM; 858 String key = VideoManagerConstants.VM_MSG_SUBSCRIBE_ALARM;
862 logger.info("[redis发送通知] 报警{}: {}", key, JSON.toJSON(msg)); 859 logger.info("[redis发送通知] 报警{}: {}", key, JSON.toJSON(msg));
863 - RedisUtil.convertAndSend(key, (JSONObject)JSON.toJSON(msg)); 860 + redisTemplate.convertAndSend(key, JSON.toJSON(msg));
864 } 861 }
865 862
866 @Override 863 @Override
@@ -875,19 +872,19 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -875,19 +872,19 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
875 logger.info("[redis通知]获取所有推流设备的状态"); 872 logger.info("[redis通知]获取所有推流设备的状态");
876 JSONObject jsonObject = new JSONObject(); 873 JSONObject jsonObject = new JSONObject();
877 jsonObject.put(key, key); 874 jsonObject.put(key, key);
878 - RedisUtil.convertAndSend(key, jsonObject); 875 + redisTemplate.convertAndSend(key, jsonObject);
879 } 876 }
880 877
881 @Override 878 @Override
882 public int getPushStreamCount(String id) { 879 public int getPushStreamCount(String id) {
883 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_PUSH_*_*_" + id; 880 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_PUSH_*_*_" + id;
884 - return RedisUtil.scan(key).size(); 881 + return RedisUtil.scan(redisTemplate, key).size();
885 } 882 }
886 883
887 @Override 884 @Override
888 public int getProxyStreamCount(String id) { 885 public int getProxyStreamCount(String id) {
889 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_PULL_*_*_" + id; 886 String key = VideoManagerConstants.WVP_SERVER_STREAM_PREFIX + userSetting.getServerId() + "_PULL_*_*_" + id;
890 - return RedisUtil.scan(key).size(); 887 + return RedisUtil.scan(redisTemplate, key).size();
891 } 888 }
892 889
893 @Override 890 @Override
@@ -896,13 +893,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage { @@ -896,13 +893,13 @@ public class RedisCatchStorageImpl implements IRedisCatchStorage {
896 String playBackKey = VideoManagerConstants.PLAY_BLACK_PREFIX + "_" + userSetting.getServerId() + "_" + id + "_*"; 893 String playBackKey = VideoManagerConstants.PLAY_BLACK_PREFIX + "_" + userSetting.getServerId() + "_" + id + "_*";
897 String downloadKey = VideoManagerConstants.DOWNLOAD_PREFIX + "_" + userSetting.getServerId() + "_" + id + "_*"; 894 String downloadKey = VideoManagerConstants.DOWNLOAD_PREFIX + "_" + userSetting.getServerId() + "_" + id + "_*";
898 895
899 - return RedisUtil.scan(playKey).size() + RedisUtil.scan(playBackKey).size() + RedisUtil.scan(downloadKey).size(); 896 + return RedisUtil.scan(redisTemplate, playKey).size() + RedisUtil.scan(redisTemplate, playBackKey).size() + RedisUtil.scan(redisTemplate, downloadKey).size();
900 } 897 }
901 898
902 @Override 899 @Override
903 public int getGbSendCount(String id) { 900 public int getGbSendCount(String id) {
904 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX 901 String key = VideoManagerConstants.PLATFORM_SEND_RTP_INFO_PREFIX
905 + userSetting.getServerId() + "_*_" + id + "_*"; 902 + userSetting.getServerId() + "_*_" + id + "_*";
906 - return RedisUtil.scan(key).size(); 903 + return RedisUtil.scan(redisTemplate, key).size();
907 } 904 }
908 } 905 }
src/main/java/com/genersoft/iot/vmp/utils/JsonUtil.java
1 package com.genersoft.iot.vmp.utils; 1 package com.genersoft.iot.vmp.utils;
2 2
3 -import com.alibaba.fastjson2.JSON;  
4 -import com.alibaba.fastjson2.JSONObject;  
5 -import com.genersoft.iot.vmp.utils.redis.RedisUtil; 3 +import org.springframework.data.redis.core.RedisTemplate;
6 4
7 import java.util.Objects; 5 import java.util.Objects;
8 6
@@ -26,8 +24,8 @@ public final class JsonUtil { @@ -26,8 +24,8 @@ public final class JsonUtil {
26 * @param <T> 24 * @param <T>
27 * @return result type 25 * @return result type
28 */ 26 */
29 - public static <T> T redisJsonToObject(String key, Class<T> clazz) {  
30 - Object jsonObject = RedisUtil.get(key); 27 + public static <T> T redisJsonToObject(RedisTemplate<Object, Object> redisTemplate, String key, Class<T> clazz) {
  28 + Object jsonObject = redisTemplate.opsForValue().get(key);
31 if (Objects.isNull(jsonObject)) { 29 if (Objects.isNull(jsonObject)) {
32 return null; 30 return null;
33 } 31 }
src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java
1 package com.genersoft.iot.vmp.utils.redis; 1 package com.genersoft.iot.vmp.utils.redis;
2 2
3 -import com.alibaba.fastjson2.JSONObject;  
4 -import com.genersoft.iot.vmp.utils.SpringBeanFactory;  
5 -import org.springframework.data.redis.core.*;  
6 -import org.springframework.util.CollectionUtils; 3 +import org.springframework.data.redis.core.Cursor;
  4 +import org.springframework.data.redis.core.RedisCallback;
  5 +import org.springframework.data.redis.core.RedisTemplate;
  6 +import org.springframework.data.redis.core.ScanOptions;
7 7
8 -import java.util.*;  
9 -import java.util.concurrent.TimeUnit; 8 +import java.util.ArrayList;
  9 +import java.util.HashSet;
  10 +import java.util.List;
  11 +import java.util.Set;
10 12
11 -/** 13 +/**
12 * Redis工具类 14 * Redis工具类
  15 + *
13 * @author swwheihei 16 * @author swwheihei
14 * @date 2020年5月6日 下午8:27:29 17 * @date 2020年5月6日 下午8:27:29
15 */ 18 */
16 @SuppressWarnings(value = {"rawtypes", "unchecked"}) 19 @SuppressWarnings(value = {"rawtypes", "unchecked"})
17 public class RedisUtil { 20 public class RedisUtil {
18 21
19 - private static RedisTemplate redisTemplate;  
20 -  
21 - static {  
22 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
23 - }  
24 -  
25 - /**  
26 - * 指定缓存失效时间  
27 - * @param key 键  
28 - * @param time 时间(秒)  
29 - * @return true / false  
30 - */  
31 - public static boolean expire(String key, long time) {  
32 - if (redisTemplate == null) {  
33 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
34 - }  
35 - try {  
36 - if (time > 0) {  
37 - redisTemplate.expire(key, time, TimeUnit.SECONDS);  
38 - }  
39 - return true;  
40 - } catch (Exception e) {  
41 - e.printStackTrace();  
42 - return false;  
43 - }  
44 - }  
45 -  
46 - /**  
47 - * 根据 key 获取过期时间  
48 - * @param key 键  
49 - */  
50 - public static long getExpire(String key) {  
51 - if (redisTemplate == null) {  
52 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
53 - }  
54 - return redisTemplate.getExpire(key, TimeUnit.SECONDS);  
55 - }  
56 -  
57 - /**  
58 - * 判断 key 是否存在  
59 - * @param key 键  
60 - * @return true / false  
61 - */  
62 - public static boolean hasKey(String key) {  
63 - if (redisTemplate == null) {  
64 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
65 - }  
66 - try {  
67 - return redisTemplate.hasKey(key);  
68 - } catch (Exception e) {  
69 - e.printStackTrace();  
70 - return false;  
71 - }  
72 - }  
73 -  
74 - /**  
75 - * 删除缓存  
76 - * @SuppressWarnings("unchecked") 忽略类型转换警告  
77 - * @param key 键(一个或者多个)  
78 - */  
79 - public static boolean del(String... key) {  
80 - if (redisTemplate == null) {  
81 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
82 - }  
83 - try {  
84 - if (key != null && key.length > 0) {  
85 - if (key.length == 1) {  
86 - redisTemplate.delete(key[0]);  
87 - } else {  
88 -// 传入一个 Collection<String> 集合  
89 - redisTemplate.delete(CollectionUtils.arrayToList(key));  
90 - }  
91 - }  
92 - return true;  
93 - } catch (Exception e) {  
94 - e.printStackTrace();  
95 - return false;  
96 - }  
97 - }  
98 -  
99 -// ============================== String ==============================  
100 -  
101 - /**  
102 - * 普通缓存获取  
103 - * @param key 键  
104 - * @return 值  
105 - */  
106 - public static Object get(String key) {  
107 - if (redisTemplate == null) {  
108 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
109 - }  
110 - return key == null ? null : redisTemplate.opsForValue().get(key);  
111 - }  
112 -  
113 - /**  
114 - * 普通缓存放入  
115 - * @param key 键  
116 - * @param value 值  
117 - * @return true / false  
118 - */  
119 - public static boolean set(String key, Object value) {  
120 - if (redisTemplate == null) {  
121 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
122 - }  
123 - try {  
124 - redisTemplate.opsForValue().set(key, value);  
125 - return true;  
126 - } catch (Exception e) {  
127 - e.printStackTrace();  
128 - return false;  
129 - }  
130 - }  
131 -  
132 - /**  
133 - * 普通缓存放入并设置时间  
134 - * @param key 键  
135 - * @param value 值  
136 - * @param time 时间(秒),如果 time < 0 则设置无限时间  
137 - * @return true / false  
138 - */  
139 - public static boolean set(String key, Object value, long time) {  
140 - if (redisTemplate == null) {  
141 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
142 - }  
143 - try {  
144 - if (time > 0) {  
145 - redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);  
146 - } else {  
147 - set(key, value);  
148 - }  
149 - return true;  
150 - } catch (Exception e) {  
151 - e.printStackTrace();  
152 - return false;  
153 - }  
154 - }  
155 -  
156 - /**  
157 - * 递增  
158 - * @param key 键  
159 - * @param delta 递增大小  
160 - * @return  
161 - */  
162 - public static long incr(String key, long delta) {  
163 - if (redisTemplate == null) {  
164 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
165 - }  
166 - if (delta < 0) {  
167 - throw new RuntimeException("递增因子必须大于 0");  
168 - }  
169 - return redisTemplate.opsForValue().increment(key, delta);  
170 - }  
171 -  
172 - /**  
173 - * 递减  
174 - * @param key 键  
175 - * @param delta 递减大小  
176 - * @return  
177 - */  
178 - public static long decr(String key, long delta) {  
179 - if (redisTemplate == null) {  
180 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
181 - }  
182 - if (delta < 0) {  
183 - throw new RuntimeException("递减因子必须大于 0");  
184 - }  
185 - return redisTemplate.opsForValue().increment(key, delta);  
186 - }  
187 -  
188 -// ============================== Map ==============================  
189 -  
190 - /**  
191 - * HashGet  
192 - * @param key 键(no null)  
193 - * @param item 项(no null)  
194 - * @return 值  
195 - */  
196 - public static Object hget(String key, String item) {  
197 - if (redisTemplate == null) {  
198 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
199 - }  
200 - return redisTemplate.opsForHash().get(key, item);  
201 - }  
202 -  
203 - /**  
204 - * 获取 key 对应的 map  
205 - * @param key 键(no null)  
206 - * @return 对应的多个键值  
207 - */  
208 - public static Map<Object, Object> hmget(String key) {  
209 - if (redisTemplate == null) {  
210 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
211 - }  
212 - return redisTemplate.opsForHash().entries(key);  
213 - }  
214 -  
215 - /**  
216 - * HashSet  
217 - * @param key 键  
218 - * @param map 值  
219 - * @return true / false  
220 - */  
221 - public static boolean hmset(String key, Map<Object, Object> map) {  
222 - if (redisTemplate == null) {  
223 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
224 - }  
225 - try {  
226 - redisTemplate.opsForHash().putAll(key, map);  
227 - return true;  
228 - } catch (Exception e) {  
229 - e.printStackTrace();  
230 - return false;  
231 - }  
232 - }  
233 -  
234 - /**  
235 - * HashSet 并设置时间  
236 - * @param key 键  
237 - * @param map 值  
238 - * @param time 时间  
239 - * @return true / false  
240 - */  
241 - public static boolean hmset(String key, Map<?, ?> map, long time) {  
242 - if (redisTemplate == null) {  
243 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
244 - }  
245 - try {  
246 - redisTemplate.opsForHash().putAll(key, map);  
247 - if (time > 0) {  
248 - expire(key, time);  
249 - }  
250 - return true;  
251 - } catch (Exception e) {  
252 - e.printStackTrace();  
253 - return false;  
254 - }  
255 - }  
256 -  
257 - /**  
258 - * 向一张 Hash表 中放入数据,如不存在则创建  
259 - * @param key 键  
260 - * @param item 项  
261 - * @param value 值  
262 - * @return true / false  
263 - */  
264 - public static boolean hset(String key, String item, Object value) {  
265 - if (redisTemplate == null) {  
266 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
267 - }  
268 - try {  
269 - redisTemplate.opsForHash().put(key, item, value);  
270 - return true;  
271 - } catch (Exception e) {  
272 - e.printStackTrace();  
273 - return false;  
274 - }  
275 - }  
276 -  
277 - /**  
278 - * 向一张 Hash表 中放入数据,并设置时间,如不存在则创建  
279 - * @param key 键  
280 - * @param item 项  
281 - * @param value 值  
282 - * @param time 时间(如果原来的 Hash表 设置了时间,这里会覆盖)  
283 - * @return true / false  
284 - */  
285 - public static boolean hset(String key, String item, Object value, long time) {  
286 - if (redisTemplate == null) {  
287 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
288 - }  
289 - try {  
290 - redisTemplate.opsForHash().put(key, item, value);  
291 - if (time > 0) {  
292 - expire(key, time);  
293 - }  
294 - return true;  
295 - } catch (Exception e) {  
296 - e.printStackTrace();  
297 - return false;  
298 - }  
299 - }  
300 -  
301 - /**  
302 - * 删除 Hash表 中的值  
303 - * @param key 键  
304 - * @param item 项(可以多个,no null)  
305 - */  
306 - public static void hdel(String key, Object... item) {  
307 - if (redisTemplate == null) {  
308 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
309 - }  
310 - redisTemplate.opsForHash().delete(key, item);  
311 - }  
312 -  
313 - /**  
314 - * 判断 Hash表 中是否有该键的值  
315 - * @param key 键(no null)  
316 - * @param item 值(no null)  
317 - * @return true / false  
318 - */  
319 - public static boolean hHasKey(String key, String item) {  
320 - if (redisTemplate == null) {  
321 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
322 - }  
323 - return redisTemplate.opsForHash().hasKey(key, item);  
324 - }  
325 -  
326 - /**  
327 - * Hash递增,如果不存在则创建一个,并把新增的值返回  
328 - * @param key 键  
329 - * @param item 项  
330 - * @param by 递增大小 > 0  
331 - * @return  
332 - */  
333 - public static Double hincr(String key, String item, Double by) {  
334 - if (redisTemplate == null) {  
335 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
336 - }  
337 - return redisTemplate.opsForHash().increment(key, item, by);  
338 - }  
339 -  
340 - /**  
341 - * Hash递减  
342 - * @param key 键  
343 - * @param item 项  
344 - * @param by 递减大小  
345 - * @return  
346 - */  
347 - public static Double hdecr(String key, String item, Double by) {  
348 - if (redisTemplate == null) {  
349 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
350 - }  
351 - return redisTemplate.opsForHash().increment(key, item, -by);  
352 - }  
353 -  
354 -// ============================== Set ==============================  
355 -  
356 - /**  
357 - * 根据 key 获取 set 中的所有值  
358 - * @param key 键  
359 - * @return 值  
360 - */  
361 - public static Set<Object> sGet(String key) {  
362 - if (redisTemplate == null) {  
363 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
364 - }  
365 - try {  
366 - return redisTemplate.opsForSet().members(key);  
367 - } catch (Exception e) {  
368 - e.printStackTrace();  
369 - return null;  
370 - }  
371 - }  
372 -  
373 - /**  
374 - * 从键为 key 的 set 中,根据 value 查询是否存在  
375 - * @param key 键  
376 - * @param value 值  
377 - * @return true / false  
378 - */  
379 - public static boolean sHasKey(String key, Object value) {  
380 - if (redisTemplate == null) {  
381 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
382 - }  
383 - try {  
384 - return redisTemplate.opsForSet().isMember(key, value);  
385 - } catch (Exception e) {  
386 - e.printStackTrace();  
387 - return false;  
388 - }  
389 - }  
390 -  
391 - /**  
392 - * 将数据放入 set缓存  
393 - * @param key 键值  
394 - * @param values 值(可以多个)  
395 - * @return 成功个数  
396 - */  
397 - public static long sSet(String key, Object... values) {  
398 - if (redisTemplate == null) {  
399 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
400 - }  
401 - try {  
402 - return redisTemplate.opsForSet().add(key, values);  
403 - } catch (Exception e) {  
404 - e.printStackTrace();  
405 - return 0;  
406 - }  
407 - }  
408 -  
409 - /**  
410 - * 将数据放入 set缓存,并设置时间  
411 - * @param key 键  
412 - * @param time 时间  
413 - * @param values 值(可以多个)  
414 - * @return 成功放入个数  
415 - */  
416 - public static long sSet(String key, long time, Object... values) {  
417 - if (redisTemplate == null) {  
418 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
419 - }  
420 - try {  
421 - long count = redisTemplate.opsForSet().add(key, values);  
422 - if (time > 0) {  
423 - expire(key, time);  
424 - }  
425 - return count;  
426 - } catch (Exception e) {  
427 - e.printStackTrace();  
428 - return 0;  
429 - }  
430 - }  
431 -  
432 - /**  
433 - * 获取 set缓存的长度  
434 - * @param key 键  
435 - * @return 长度  
436 - */  
437 - public static long sGetSetSize(String key) {  
438 - if (redisTemplate == null) {  
439 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
440 - }  
441 - try {  
442 - return redisTemplate.opsForSet().size(key);  
443 - } catch (Exception e) {  
444 - e.printStackTrace();  
445 - return 0;  
446 - }  
447 - }  
448 -  
449 - /**  
450 - * 移除 set缓存中,值为 value 的  
451 - * @param key 键  
452 - * @param values 值  
453 - * @return 成功移除个数  
454 - */  
455 - public static long setRemove(String key, Object... values) {  
456 - if (redisTemplate == null) {  
457 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
458 - }  
459 - try {  
460 - return redisTemplate.opsForSet().remove(key, values);  
461 - } catch (Exception e) {  
462 - e.printStackTrace();  
463 - return 0;  
464 - }  
465 - }  
466 -// ============================== ZSet ==============================  
467 -  
468 - /**  
469 - * 添加一个元素, zset与set最大的区别就是每个元素都有一个score,因此有个排序的辅助功能; zadd  
470 - *  
471 - * @param key  
472 - * @param value  
473 - * @param score  
474 - */  
475 - public static void zAdd(Object key, Object value, double score) {  
476 - if (redisTemplate == null) {  
477 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
478 - }  
479 - redisTemplate.opsForZSet().add(key, value, score);  
480 - }  
481 -  
482 - /**  
483 - * 删除元素 zrem  
484 - *  
485 - * @param key  
486 - * @param value  
487 - */  
488 - public static void zRemove(Object key, Object value) {  
489 - if (redisTemplate == null) {  
490 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
491 - }  
492 - redisTemplate.opsForZSet().remove(key, value);  
493 - }  
494 -  
495 - /**  
496 - * score的增加or减少 zincrby  
497 - *  
498 - * @param key  
499 - * @param value  
500 - * @param delta -1 表示减 1 表示加1  
501 - */  
502 - public static Double zIncrScore(Object key, Object value, double delta) {  
503 - if (redisTemplate == null) {  
504 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
505 - }  
506 - return redisTemplate.opsForZSet().incrementScore(key, value, delta);  
507 - }  
508 -  
509 - /**  
510 - * 查询value对应的score zscore  
511 - *  
512 - * @param key  
513 - * @param value  
514 - * @return  
515 - */  
516 - public static Double zScore(Object key, Object value) {  
517 - if (redisTemplate == null) {  
518 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
519 - }  
520 - return redisTemplate.opsForZSet().score(key, value);  
521 - }  
522 -  
523 - /**  
524 - * 判断value在zset中的排名 zrank  
525 - *  
526 - * @param key  
527 - * @param value  
528 - * @return  
529 - */  
530 - public static Long zRank(Object key, Object value) {  
531 - if (redisTemplate == null) {  
532 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
533 - }  
534 - return redisTemplate.opsForZSet().rank(key, value);  
535 - }  
536 -  
537 - /**  
538 - * 返回集合的长度  
539 - *  
540 - * @param key  
541 - * @return  
542 - */  
543 - public static Long zSize(Object key) {  
544 - if (redisTemplate == null) {  
545 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
546 - }  
547 - return redisTemplate.opsForZSet().zCard(key);  
548 - }  
549 -  
550 - /**  
551 - * 查询集合中指定顺序的值, 0 -1 表示获取全部的集合内容 zrange  
552 - *  
553 - * 返回有序的集合,score小的在前面  
554 - *  
555 - * @param key  
556 - * @param start  
557 - * @param end  
558 - * @return  
559 - */  
560 - public static Set<Object> zRange(Object key, int start, int end) {  
561 - if (redisTemplate == null) {  
562 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
563 - }  
564 - return redisTemplate.opsForZSet().range(key, start, end);  
565 - }  
566 - /**  
567 - * 查询集合中指定顺序的值和score,0, -1 表示获取全部的集合内容  
568 - *  
569 - * @param key  
570 - * @param start  
571 - * @param end  
572 - * @return  
573 - */  
574 - public static Set<ZSetOperations.TypedTuple<String>> zRangeWithScore(Object key, int start, int end) {  
575 - if (redisTemplate == null) {  
576 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
577 - }  
578 - return redisTemplate.opsForZSet().rangeWithScores(key, start, end);  
579 - }  
580 - /**  
581 - * 查询集合中指定顺序的值 zrevrange  
582 - *  
583 - * 返回有序的集合中,score大的在前面  
584 - *  
585 - * @param key  
586 - * @param start  
587 - * @param end  
588 - * @return  
589 - */  
590 - public static Set<String> zRevRange(Object key, int start, int end) {  
591 - if (redisTemplate == null) {  
592 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
593 - }  
594 - return redisTemplate.opsForZSet().reverseRange(key, start, end);  
595 - }  
596 - /**  
597 - * 根据score的值,来获取满足条件的集合 zrangebyscore  
598 - *  
599 - * @param key  
600 - * @param min  
601 - * @param max  
602 - * @return  
603 - */  
604 - public static Set<String> zSortRange(Object key, int min, int max) {  
605 - if (redisTemplate == null) {  
606 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
607 - }  
608 - return redisTemplate.opsForZSet().rangeByScore(key, min, max);  
609 - }  
610 -  
611 -  
612 -// ============================== List ==============================  
613 -  
614 - /**  
615 - * 获取 list缓存的内容  
616 - * @param key 键  
617 - * @param start 开始  
618 - * @param end 结束(0 到 -1 代表所有值)  
619 - * @return  
620 - */  
621 - public static List<Object> lGet(String key, long start, long end) {  
622 - if (redisTemplate == null) {  
623 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
624 - }  
625 - try {  
626 - return redisTemplate.opsForList().range(key, start, end);  
627 - } catch (Exception e) {  
628 - e.printStackTrace();  
629 - return null;  
630 - }  
631 - }  
632 -  
633 - /**  
634 - * 获取 list缓存的长度  
635 - * @param key 键  
636 - * @return 长度  
637 - */  
638 - public static long lGetListSize(String key) {  
639 - if (redisTemplate == null) {  
640 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
641 - }  
642 - try {  
643 - return redisTemplate.opsForList().size(key);  
644 - } catch (Exception e) {  
645 - e.printStackTrace();  
646 - return 0;  
647 - }  
648 - }  
649 -  
650 - /**  
651 - * 根据索引 index 获取键为 key 的 list 中的元素  
652 - * @param key 键  
653 - * @param index 索引  
654 - * 当 index >= 0 时 {0:表头, 1:第二个元素}  
655 - * 当 index < 0 时 {-1:表尾, -2:倒数第二个元素}  
656 - * @return 值  
657 - */  
658 - public static Object lGetIndex(String key, long index) {  
659 - if (redisTemplate == null) {  
660 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
661 - }  
662 - try {  
663 - return redisTemplate.opsForList().index(key, index);  
664 - } catch (Exception e) {  
665 - e.printStackTrace();  
666 - return null;  
667 - }  
668 - }  
669 -  
670 - /**  
671 - * 将值 value 插入键为 key 的 list 中,如果 list 不存在则创建空 list  
672 - * @param key 键  
673 - * @param value 值  
674 - * @return true / false  
675 - */  
676 - public static boolean lSet(String key, Object value) {  
677 - if (redisTemplate == null) {  
678 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
679 - }  
680 - try {  
681 - redisTemplate.opsForList().rightPush(key, value);  
682 - return true;  
683 - } catch (Exception e) {  
684 - e.printStackTrace();  
685 - return false;  
686 - }  
687 - }  
688 -  
689 - /**  
690 - * 将值 value 插入键为 key 的 list 中,并设置时间  
691 - * @param key 键  
692 - * @param value 值  
693 - * @param time 时间  
694 - * @return true / false  
695 - */  
696 - public static boolean lSet(String key, Object value, long time) {  
697 - if (redisTemplate == null) {  
698 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
699 - }  
700 - try {  
701 - redisTemplate.opsForList().rightPush(key, value);  
702 - if (time > 0) {  
703 - expire(key, time);  
704 - }  
705 - return true;  
706 - } catch (Exception e) {  
707 - e.printStackTrace();  
708 - return false;  
709 - }  
710 - }  
711 -  
712 - /**  
713 - * 将 values 插入键为 key 的 list 中  
714 - * @param key 键  
715 - * @param values 值  
716 - * @return true / false  
717 - */  
718 - public static boolean lSetList(String key, List<Object> values) {  
719 - if (redisTemplate == null) {  
720 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
721 - }  
722 - try {  
723 - redisTemplate.opsForList().rightPushAll(key, values);  
724 - return true;  
725 - } catch (Exception e) {  
726 - e.printStackTrace();  
727 - return false;  
728 - }  
729 - }  
730 -  
731 - /**  
732 - * 将 values 插入键为 key 的 list 中,并设置时间  
733 - * @param key 键  
734 - * @param values 值  
735 - * @param time 时间  
736 - * @return true / false  
737 - */  
738 - public static boolean lSetList(String key, List<Object> values, long time) {  
739 - if (redisTemplate == null) {  
740 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
741 - }  
742 - try {  
743 - redisTemplate.opsForList().rightPushAll(key, values);  
744 - if (time > 0) {  
745 - expire(key, time);  
746 - }  
747 - return true;  
748 - } catch (Exception e) {  
749 - e.printStackTrace();  
750 - return false;  
751 - }  
752 - }  
753 -  
754 - /**  
755 - * 根据索引 index 修改键为 key 的值  
756 - * @param key 键  
757 - * @param index 索引  
758 - * @param value 值  
759 - * @return true / false  
760 - */  
761 - public static boolean lUpdateIndex(String key, long index, Object value) {  
762 - if (redisTemplate == null) {  
763 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
764 - }  
765 - try {  
766 - redisTemplate.opsForList().set(key, index, value);  
767 - return true;  
768 - } catch (Exception e) {  
769 - e.printStackTrace();  
770 - return false;  
771 - }  
772 - }  
773 -  
774 - /**  
775 - * 在键为 key 的 list 中删除值为 value 的元素  
776 - * @param key 键  
777 - * @param count 如果 count == 0 则删除 list 中所有值为 value 的元素  
778 - * 如果 count > 0 则删除 list 中最左边那个值为 value 的元素  
779 - * 如果 count < 0 则删除 list 中最右边那个值为 value 的元素  
780 - * @param value  
781 - * @return  
782 - */  
783 - public static long lRemove(String key, long count, Object value) {  
784 - if (redisTemplate == null) {  
785 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
786 - }  
787 - try {  
788 - return redisTemplate.opsForList().remove(key, count, value);  
789 - } catch (Exception e) {  
790 - e.printStackTrace();  
791 - return 0;  
792 - }  
793 - }  
794 -  
795 - /**  
796 - * 在键为 key 的 list中移除第一个元素  
797 - * @param key 键  
798 - * @return  
799 - */  
800 - public static Object lLeftPop(String key) {  
801 - if (redisTemplate == null) {  
802 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
803 - }  
804 - return redisTemplate.opsForList().leftPop(key);  
805 - }  
806 -  
807 - /**  
808 - * 在键为 key 的 list中移除、最后一个元素  
809 - * @param key 键  
810 - * @return  
811 - */  
812 - public static Object lrightPop(String key) {  
813 - if (redisTemplate == null) {  
814 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
815 - }  
816 - return redisTemplate.opsForList().rightPop(key);  
817 - }  
818 -  
819 - /**  
820 - * 模糊查询  
821 - * @param key 键  
822 - * @return true / false  
823 - */  
824 - public static List<Object> keys(String key) {  
825 - if (redisTemplate == null) {  
826 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
827 - }  
828 - try {  
829 - Set<String> set = redisTemplate.keys(key);  
830 - return new ArrayList<>(set);  
831 - } catch (Exception e) {  
832 - e.printStackTrace();  
833 - return null;  
834 - }  
835 - }  
836 -  
837 -  
838 /** 22 /**
839 * 模糊查询 23 * 模糊查询
  24 + *
840 * @param query 查询参数 25 * @param query 查询参数
841 * @return 26 * @return
842 */ 27 */
843 -// public static List<Object> scan(String query) {  
844 -// List<Object> result = new ArrayList<>();  
845 -// try {  
846 -// Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("field",  
847 -// ScanOptions.scanOptions().match(query).count(1000).build());  
848 -// while (cursor.hasNext()) {  
849 -// Map.Entry<Object,Object> entry = cursor.next();  
850 -// result.add(entry.getKey());  
851 -// Object key = entry.getKey();  
852 -// Object valueSet = entry.getValue();  
853 -// }  
854 -// //关闭cursor  
855 -// cursor.close();  
856 -// } catch (Exception e) {  
857 -// e.printStackTrace();  
858 -// }  
859 -// return result;  
860 -// } 28 + public static List<Object> scan(RedisTemplate redisTemplate, String query) {
861 29
862 - /**  
863 - * 模糊查询  
864 - * @param query 查询参数  
865 - * @return  
866 - */  
867 - public static List<Object> scan(String query) {  
868 - if (redisTemplate == null) {  
869 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
870 - }  
871 Set<String> resultKeys = (Set<String>) redisTemplate.execute((RedisCallback<Set<String>>) connection -> { 30 Set<String> resultKeys = (Set<String>) redisTemplate.execute((RedisCallback<Set<String>>) connection -> {
872 ScanOptions scanOptions = ScanOptions.scanOptions().match("*" + query + "*").count(1000).build(); 31 ScanOptions scanOptions = ScanOptions.scanOptions().match("*" + query + "*").count(1000).build();
873 Cursor<byte[]> scan = connection.scan(scanOptions); 32 Cursor<byte[]> scan = connection.scan(scanOptions);
@@ -881,19 +40,7 @@ public class RedisUtil { @@ -881,19 +40,7 @@ public class RedisUtil {
881 40
882 return new ArrayList<>(resultKeys); 41 return new ArrayList<>(resultKeys);
883 } 42 }
884 - public static List<Object> scan2(String query) {  
885 - if (redisTemplate == null) {  
886 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
887 - }  
888 - Set<String> keys = redisTemplate.keys(query);  
889 - return new ArrayList<>(keys);  
890 - }  
891 - // ============================== 消息发送与订阅 ==============================  
892 - public static void convertAndSend(String channel, JSONObject msg) {  
893 - if (redisTemplate == null) {  
894 - redisTemplate = SpringBeanFactory.getBean("redisTemplate");  
895 - }  
896 - redisTemplate.convertAndSend(channel, msg);  
897 - }  
898 -  
899 } 43 }
  44 +
  45 +
  46 +
src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil2.java 0 → 100644
  1 +package com.genersoft.iot.vmp.utils.redis;
  2 +
  3 +import com.alibaba.fastjson2.JSONObject;
  4 +import com.genersoft.iot.vmp.utils.SpringBeanFactory;
  5 +import org.springframework.data.redis.core.*;
  6 +import org.springframework.util.CollectionUtils;
  7 +
  8 +import java.util.*;
  9 +import java.util.concurrent.TimeUnit;
  10 +
  11 +/**
  12 + * Redis工具类
  13 + * @author swwheihei
  14 + * @date 2020年5月6日 下午8:27:29
  15 + */
  16 +@SuppressWarnings(value = {"rawtypes", "unchecked"})
  17 +public class RedisUtil2 {
  18 +
  19 + private static RedisTemplate redisTemplate;
  20 +
  21 + static {
  22 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  23 + }
  24 +
  25 + /**
  26 + * 指定缓存失效时间
  27 + * @param key 键
  28 + * @param time 时间(秒)
  29 + * @return true / false
  30 + */
  31 + public static boolean expire(String key, long time) {
  32 + if (redisTemplate == null) {
  33 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  34 + }
  35 + try {
  36 + if (time > 0) {
  37 + redisTemplate.expire(key, time, TimeUnit.SECONDS);
  38 + }
  39 + return true;
  40 + } catch (Exception e) {
  41 + e.printStackTrace();
  42 + return false;
  43 + }
  44 + }
  45 +
  46 + /**
  47 + * 根据 key 获取过期时间
  48 + * @param key 键
  49 + */
  50 + public static long getExpire(String key) {
  51 + if (redisTemplate == null) {
  52 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  53 + }
  54 + return redisTemplate.getExpire(key, TimeUnit.SECONDS);
  55 + }
  56 +
  57 + /**
  58 + * 判断 key 是否存在
  59 + * @param key 键
  60 + * @return true / false
  61 + */
  62 + public static boolean hasKey(String key) {
  63 + if (redisTemplate == null) {
  64 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  65 + }
  66 + try {
  67 + return redisTemplate.hasKey(key);
  68 + } catch (Exception e) {
  69 + e.printStackTrace();
  70 + return false;
  71 + }
  72 + }
  73 +
  74 + /**
  75 + * 删除缓存
  76 + * @SuppressWarnings("unchecked") 忽略类型转换警告
  77 + * @param key 键(一个或者多个)
  78 + */
  79 + public static boolean del(String... key) {
  80 + if (redisTemplate == null) {
  81 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  82 + }
  83 + try {
  84 + if (key != null && key.length > 0) {
  85 + if (key.length == 1) {
  86 + redisTemplate.delete(key[0]);
  87 + } else {
  88 +// 传入一个 Collection<String> 集合
  89 + redisTemplate.delete(CollectionUtils.arrayToList(key));
  90 + }
  91 + }
  92 + return true;
  93 + } catch (Exception e) {
  94 + e.printStackTrace();
  95 + return false;
  96 + }
  97 + }
  98 +
  99 +// ============================== String ==============================
  100 +
  101 + /**
  102 + * 普通缓存获取
  103 + * @param key 键
  104 + * @return 值
  105 + */
  106 + public static Object get(String key) {
  107 + if (redisTemplate == null) {
  108 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  109 + }
  110 + return key == null ? null : redisTemplate.opsForValue().get(key);
  111 + }
  112 +
  113 + /**
  114 + * 普通缓存放入
  115 + * @param key 键
  116 + * @param value 值
  117 + * @return true / false
  118 + */
  119 + public static boolean set(String key, Object value) {
  120 + if (redisTemplate == null) {
  121 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  122 + }
  123 + try {
  124 + redisTemplate.opsForValue().set(key, value);
  125 + return true;
  126 + } catch (Exception e) {
  127 + e.printStackTrace();
  128 + return false;
  129 + }
  130 + }
  131 +
  132 + /**
  133 + * 普通缓存放入并设置时间
  134 + * @param key 键
  135 + * @param value 值
  136 + * @param time 时间(秒),如果 time < 0 则设置无限时间
  137 + * @return true / false
  138 + */
  139 + public static boolean set(String key, Object value, long time) {
  140 + if (redisTemplate == null) {
  141 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  142 + }
  143 + try {
  144 + if (time > 0) {
  145 + redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
  146 + } else {
  147 + set(key, value);
  148 + }
  149 + return true;
  150 + } catch (Exception e) {
  151 + e.printStackTrace();
  152 + return false;
  153 + }
  154 + }
  155 +
  156 + /**
  157 + * 递增
  158 + * @param key 键
  159 + * @param delta 递增大小
  160 + * @return
  161 + */
  162 + public static long incr(String key, long delta) {
  163 + if (redisTemplate == null) {
  164 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  165 + }
  166 + if (delta < 0) {
  167 + throw new RuntimeException("递增因子必须大于 0");
  168 + }
  169 + return redisTemplate.opsForValue().increment(key, delta);
  170 + }
  171 +
  172 + /**
  173 + * 递减
  174 + * @param key 键
  175 + * @param delta 递减大小
  176 + * @return
  177 + */
  178 + public static long decr(String key, long delta) {
  179 + if (redisTemplate == null) {
  180 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  181 + }
  182 + if (delta < 0) {
  183 + throw new RuntimeException("递减因子必须大于 0");
  184 + }
  185 + return redisTemplate.opsForValue().increment(key, delta);
  186 + }
  187 +
  188 +// ============================== Map ==============================
  189 +
  190 + /**
  191 + * HashGet
  192 + * @param key 键(no null)
  193 + * @param item 项(no null)
  194 + * @return 值
  195 + */
  196 + public static Object hget(String key, String item) {
  197 + if (redisTemplate == null) {
  198 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  199 + }
  200 + return redisTemplate.opsForHash().get(key, item);
  201 + }
  202 +
  203 + /**
  204 + * 获取 key 对应的 map
  205 + * @param key 键(no null)
  206 + * @return 对应的多个键值
  207 + */
  208 + public static Map<Object, Object> hmget(String key) {
  209 + if (redisTemplate == null) {
  210 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  211 + }
  212 + return redisTemplate.opsForHash().entries(key);
  213 + }
  214 +
  215 + /**
  216 + * HashSet
  217 + * @param key 键
  218 + * @param map 值
  219 + * @return true / false
  220 + */
  221 + public static boolean hmset(String key, Map<Object, Object> map) {
  222 + if (redisTemplate == null) {
  223 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  224 + }
  225 + try {
  226 + redisTemplate.opsForHash().putAll(key, map);
  227 + return true;
  228 + } catch (Exception e) {
  229 + e.printStackTrace();
  230 + return false;
  231 + }
  232 + }
  233 +
  234 + /**
  235 + * HashSet 并设置时间
  236 + * @param key 键
  237 + * @param map 值
  238 + * @param time 时间
  239 + * @return true / false
  240 + */
  241 + public static boolean hmset(String key, Map<?, ?> map, long time) {
  242 + if (redisTemplate == null) {
  243 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  244 + }
  245 + try {
  246 + redisTemplate.opsForHash().putAll(key, map);
  247 + if (time > 0) {
  248 + expire(key, time);
  249 + }
  250 + return true;
  251 + } catch (Exception e) {
  252 + e.printStackTrace();
  253 + return false;
  254 + }
  255 + }
  256 +
  257 + /**
  258 + * 向一张 Hash表 中放入数据,如不存在则创建
  259 + * @param key 键
  260 + * @param item 项
  261 + * @param value 值
  262 + * @return true / false
  263 + */
  264 + public static boolean hset(String key, String item, Object value) {
  265 + if (redisTemplate == null) {
  266 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  267 + }
  268 + try {
  269 + redisTemplate.opsForHash().put(key, item, value);
  270 + return true;
  271 + } catch (Exception e) {
  272 + e.printStackTrace();
  273 + return false;
  274 + }
  275 + }
  276 +
  277 + /**
  278 + * 向一张 Hash表 中放入数据,并设置时间,如不存在则创建
  279 + * @param key 键
  280 + * @param item 项
  281 + * @param value 值
  282 + * @param time 时间(如果原来的 Hash表 设置了时间,这里会覆盖)
  283 + * @return true / false
  284 + */
  285 + public static boolean hset(String key, String item, Object value, long time) {
  286 + if (redisTemplate == null) {
  287 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  288 + }
  289 + try {
  290 + redisTemplate.opsForHash().put(key, item, value);
  291 + if (time > 0) {
  292 + expire(key, time);
  293 + }
  294 + return true;
  295 + } catch (Exception e) {
  296 + e.printStackTrace();
  297 + return false;
  298 + }
  299 + }
  300 +
  301 + /**
  302 + * 删除 Hash表 中的值
  303 + * @param key 键
  304 + * @param item 项(可以多个,no null)
  305 + */
  306 + public static void hdel(String key, Object... item) {
  307 + if (redisTemplate == null) {
  308 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  309 + }
  310 + redisTemplate.opsForHash().delete(key, item);
  311 + }
  312 +
  313 + /**
  314 + * 判断 Hash表 中是否有该键的值
  315 + * @param key 键(no null)
  316 + * @param item 值(no null)
  317 + * @return true / false
  318 + */
  319 + public static boolean hHasKey(String key, String item) {
  320 + if (redisTemplate == null) {
  321 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  322 + }
  323 + return redisTemplate.opsForHash().hasKey(key, item);
  324 + }
  325 +
  326 + /**
  327 + * Hash递增,如果不存在则创建一个,并把新增的值返回
  328 + * @param key 键
  329 + * @param item 项
  330 + * @param by 递增大小 > 0
  331 + * @return
  332 + */
  333 + public static Double hincr(String key, String item, Double by) {
  334 + if (redisTemplate == null) {
  335 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  336 + }
  337 + return redisTemplate.opsForHash().increment(key, item, by);
  338 + }
  339 +
  340 + /**
  341 + * Hash递减
  342 + * @param key 键
  343 + * @param item 项
  344 + * @param by 递减大小
  345 + * @return
  346 + */
  347 + public static Double hdecr(String key, String item, Double by) {
  348 + if (redisTemplate == null) {
  349 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  350 + }
  351 + return redisTemplate.opsForHash().increment(key, item, -by);
  352 + }
  353 +
  354 +// ============================== Set ==============================
  355 +
  356 + /**
  357 + * 根据 key 获取 set 中的所有值
  358 + * @param key 键
  359 + * @return 值
  360 + */
  361 + public static Set<Object> sGet(String key) {
  362 + if (redisTemplate == null) {
  363 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  364 + }
  365 + try {
  366 + return redisTemplate.opsForSet().members(key);
  367 + } catch (Exception e) {
  368 + e.printStackTrace();
  369 + return null;
  370 + }
  371 + }
  372 +
  373 + /**
  374 + * 从键为 key 的 set 中,根据 value 查询是否存在
  375 + * @param key 键
  376 + * @param value 值
  377 + * @return true / false
  378 + */
  379 + public static boolean sHasKey(String key, Object value) {
  380 + if (redisTemplate == null) {
  381 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  382 + }
  383 + try {
  384 + return redisTemplate.opsForSet().isMember(key, value);
  385 + } catch (Exception e) {
  386 + e.printStackTrace();
  387 + return false;
  388 + }
  389 + }
  390 +
  391 + /**
  392 + * 将数据放入 set缓存
  393 + * @param key 键值
  394 + * @param values 值(可以多个)
  395 + * @return 成功个数
  396 + */
  397 + public static long sSet(String key, Object... values) {
  398 + if (redisTemplate == null) {
  399 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  400 + }
  401 + try {
  402 + return redisTemplate.opsForSet().add(key, values);
  403 + } catch (Exception e) {
  404 + e.printStackTrace();
  405 + return 0;
  406 + }
  407 + }
  408 +
  409 + /**
  410 + * 将数据放入 set缓存,并设置时间
  411 + * @param key 键
  412 + * @param time 时间
  413 + * @param values 值(可以多个)
  414 + * @return 成功放入个数
  415 + */
  416 + public static long sSet(String key, long time, Object... values) {
  417 + if (redisTemplate == null) {
  418 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  419 + }
  420 + try {
  421 + long count = redisTemplate.opsForSet().add(key, values);
  422 + if (time > 0) {
  423 + expire(key, time);
  424 + }
  425 + return count;
  426 + } catch (Exception e) {
  427 + e.printStackTrace();
  428 + return 0;
  429 + }
  430 + }
  431 +
  432 + /**
  433 + * 获取 set缓存的长度
  434 + * @param key 键
  435 + * @return 长度
  436 + */
  437 + public static long sGetSetSize(String key) {
  438 + if (redisTemplate == null) {
  439 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  440 + }
  441 + try {
  442 + return redisTemplate.opsForSet().size(key);
  443 + } catch (Exception e) {
  444 + e.printStackTrace();
  445 + return 0;
  446 + }
  447 + }
  448 +
  449 + /**
  450 + * 移除 set缓存中,值为 value 的
  451 + * @param key 键
  452 + * @param values 值
  453 + * @return 成功移除个数
  454 + */
  455 + public static long setRemove(String key, Object... values) {
  456 + if (redisTemplate == null) {
  457 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  458 + }
  459 + try {
  460 + return redisTemplate.opsForSet().remove(key, values);
  461 + } catch (Exception e) {
  462 + e.printStackTrace();
  463 + return 0;
  464 + }
  465 + }
  466 +// ============================== ZSet ==============================
  467 +
  468 + /**
  469 + * 添加一个元素, zset与set最大的区别就是每个元素都有一个score,因此有个排序的辅助功能; zadd
  470 + *
  471 + * @param key
  472 + * @param value
  473 + * @param score
  474 + */
  475 + public static void zAdd(Object key, Object value, double score) {
  476 + if (redisTemplate == null) {
  477 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  478 + }
  479 + redisTemplate.opsForZSet().add(key, value, score);
  480 + }
  481 +
  482 + /**
  483 + * 删除元素 zrem
  484 + *
  485 + * @param key
  486 + * @param value
  487 + */
  488 + public static void zRemove(Object key, Object value) {
  489 + if (redisTemplate == null) {
  490 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  491 + }
  492 + redisTemplate.opsForZSet().remove(key, value);
  493 + }
  494 +
  495 + /**
  496 + * score的增加or减少 zincrby
  497 + *
  498 + * @param key
  499 + * @param value
  500 + * @param delta -1 表示减 1 表示加1
  501 + */
  502 + public static Double zIncrScore(Object key, Object value, double delta) {
  503 + if (redisTemplate == null) {
  504 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  505 + }
  506 + return redisTemplate.opsForZSet().incrementScore(key, value, delta);
  507 + }
  508 +
  509 + /**
  510 + * 查询value对应的score zscore
  511 + *
  512 + * @param key
  513 + * @param value
  514 + * @return
  515 + */
  516 + public static Double zScore(Object key, Object value) {
  517 + if (redisTemplate == null) {
  518 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  519 + }
  520 + return redisTemplate.opsForZSet().score(key, value);
  521 + }
  522 +
  523 + /**
  524 + * 判断value在zset中的排名 zrank
  525 + *
  526 + * @param key
  527 + * @param value
  528 + * @return
  529 + */
  530 + public static Long zRank(Object key, Object value) {
  531 + if (redisTemplate == null) {
  532 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  533 + }
  534 + return redisTemplate.opsForZSet().rank(key, value);
  535 + }
  536 +
  537 + /**
  538 + * 返回集合的长度
  539 + *
  540 + * @param key
  541 + * @return
  542 + */
  543 + public static Long zSize(Object key) {
  544 + if (redisTemplate == null) {
  545 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  546 + }
  547 + return redisTemplate.opsForZSet().zCard(key);
  548 + }
  549 +
  550 + /**
  551 + * 查询集合中指定顺序的值, 0 -1 表示获取全部的集合内容 zrange
  552 + *
  553 + * 返回有序的集合,score小的在前面
  554 + *
  555 + * @param key
  556 + * @param start
  557 + * @param end
  558 + * @return
  559 + */
  560 + public static Set<Object> zRange(Object key, int start, int end) {
  561 + if (redisTemplate == null) {
  562 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  563 + }
  564 + return redisTemplate.opsForZSet().range(key, start, end);
  565 + }
  566 + /**
  567 + * 查询集合中指定顺序的值和score,0, -1 表示获取全部的集合内容
  568 + *
  569 + * @param key
  570 + * @param start
  571 + * @param end
  572 + * @return
  573 + */
  574 + public static Set<ZSetOperations.TypedTuple<String>> zRangeWithScore(Object key, int start, int end) {
  575 + if (redisTemplate == null) {
  576 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  577 + }
  578 + return redisTemplate.opsForZSet().rangeWithScores(key, start, end);
  579 + }
  580 + /**
  581 + * 查询集合中指定顺序的值 zrevrange
  582 + *
  583 + * 返回有序的集合中,score大的在前面
  584 + *
  585 + * @param key
  586 + * @param start
  587 + * @param end
  588 + * @return
  589 + */
  590 + public static Set<String> zRevRange(Object key, int start, int end) {
  591 + if (redisTemplate == null) {
  592 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  593 + }
  594 + return redisTemplate.opsForZSet().reverseRange(key, start, end);
  595 + }
  596 + /**
  597 + * 根据score的值,来获取满足条件的集合 zrangebyscore
  598 + *
  599 + * @param key
  600 + * @param min
  601 + * @param max
  602 + * @return
  603 + */
  604 + public static Set<String> zSortRange(Object key, int min, int max) {
  605 + if (redisTemplate == null) {
  606 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  607 + }
  608 + return redisTemplate.opsForZSet().rangeByScore(key, min, max);
  609 + }
  610 +
  611 +
  612 +// ============================== List ==============================
  613 +
  614 + /**
  615 + * 获取 list缓存的内容
  616 + * @param key 键
  617 + * @param start 开始
  618 + * @param end 结束(0 到 -1 代表所有值)
  619 + * @return
  620 + */
  621 + public static List<Object> lGet(String key, long start, long end) {
  622 + if (redisTemplate == null) {
  623 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  624 + }
  625 + try {
  626 + return redisTemplate.opsForList().range(key, start, end);
  627 + } catch (Exception e) {
  628 + e.printStackTrace();
  629 + return null;
  630 + }
  631 + }
  632 +
  633 + /**
  634 + * 获取 list缓存的长度
  635 + * @param key 键
  636 + * @return 长度
  637 + */
  638 + public static long lGetListSize(String key) {
  639 + if (redisTemplate == null) {
  640 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  641 + }
  642 + try {
  643 + return redisTemplate.opsForList().size(key);
  644 + } catch (Exception e) {
  645 + e.printStackTrace();
  646 + return 0;
  647 + }
  648 + }
  649 +
  650 + /**
  651 + * 根据索引 index 获取键为 key 的 list 中的元素
  652 + * @param key 键
  653 + * @param index 索引
  654 + * 当 index >= 0 时 {0:表头, 1:第二个元素}
  655 + * 当 index < 0 时 {-1:表尾, -2:倒数第二个元素}
  656 + * @return 值
  657 + */
  658 + public static Object lGetIndex(String key, long index) {
  659 + if (redisTemplate == null) {
  660 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  661 + }
  662 + try {
  663 + return redisTemplate.opsForList().index(key, index);
  664 + } catch (Exception e) {
  665 + e.printStackTrace();
  666 + return null;
  667 + }
  668 + }
  669 +
  670 + /**
  671 + * 将值 value 插入键为 key 的 list 中,如果 list 不存在则创建空 list
  672 + * @param key 键
  673 + * @param value 值
  674 + * @return true / false
  675 + */
  676 + public static boolean lSet(String key, Object value) {
  677 + if (redisTemplate == null) {
  678 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  679 + }
  680 + try {
  681 + redisTemplate.opsForList().rightPush(key, value);
  682 + return true;
  683 + } catch (Exception e) {
  684 + e.printStackTrace();
  685 + return false;
  686 + }
  687 + }
  688 +
  689 + /**
  690 + * 将值 value 插入键为 key 的 list 中,并设置时间
  691 + * @param key 键
  692 + * @param value 值
  693 + * @param time 时间
  694 + * @return true / false
  695 + */
  696 + public static boolean lSet(String key, Object value, long time) {
  697 + if (redisTemplate == null) {
  698 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  699 + }
  700 + try {
  701 + redisTemplate.opsForList().rightPush(key, value);
  702 + if (time > 0) {
  703 + expire(key, time);
  704 + }
  705 + return true;
  706 + } catch (Exception e) {
  707 + e.printStackTrace();
  708 + return false;
  709 + }
  710 + }
  711 +
  712 + /**
  713 + * 将 values 插入键为 key 的 list 中
  714 + * @param key 键
  715 + * @param values 值
  716 + * @return true / false
  717 + */
  718 + public static boolean lSetList(String key, List<Object> values) {
  719 + if (redisTemplate == null) {
  720 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  721 + }
  722 + try {
  723 + redisTemplate.opsForList().rightPushAll(key, values);
  724 + return true;
  725 + } catch (Exception e) {
  726 + e.printStackTrace();
  727 + return false;
  728 + }
  729 + }
  730 +
  731 + /**
  732 + * 将 values 插入键为 key 的 list 中,并设置时间
  733 + * @param key 键
  734 + * @param values 值
  735 + * @param time 时间
  736 + * @return true / false
  737 + */
  738 + public static boolean lSetList(String key, List<Object> values, long time) {
  739 + if (redisTemplate == null) {
  740 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  741 + }
  742 + try {
  743 + redisTemplate.opsForList().rightPushAll(key, values);
  744 + if (time > 0) {
  745 + expire(key, time);
  746 + }
  747 + return true;
  748 + } catch (Exception e) {
  749 + e.printStackTrace();
  750 + return false;
  751 + }
  752 + }
  753 +
  754 + /**
  755 + * 根据索引 index 修改键为 key 的值
  756 + * @param key 键
  757 + * @param index 索引
  758 + * @param value 值
  759 + * @return true / false
  760 + */
  761 + public static boolean lUpdateIndex(String key, long index, Object value) {
  762 + if (redisTemplate == null) {
  763 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  764 + }
  765 + try {
  766 + redisTemplate.opsForList().set(key, index, value);
  767 + return true;
  768 + } catch (Exception e) {
  769 + e.printStackTrace();
  770 + return false;
  771 + }
  772 + }
  773 +
  774 + /**
  775 + * 在键为 key 的 list 中删除值为 value 的元素
  776 + * @param key 键
  777 + * @param count 如果 count == 0 则删除 list 中所有值为 value 的元素
  778 + * 如果 count > 0 则删除 list 中最左边那个值为 value 的元素
  779 + * 如果 count < 0 则删除 list 中最右边那个值为 value 的元素
  780 + * @param value
  781 + * @return
  782 + */
  783 + public static long lRemove(String key, long count, Object value) {
  784 + if (redisTemplate == null) {
  785 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  786 + }
  787 + try {
  788 + return redisTemplate.opsForList().remove(key, count, value);
  789 + } catch (Exception e) {
  790 + e.printStackTrace();
  791 + return 0;
  792 + }
  793 + }
  794 +
  795 + /**
  796 + * 在键为 key 的 list中移除第一个元素
  797 + * @param key 键
  798 + * @return
  799 + */
  800 + public static Object lLeftPop(String key) {
  801 + if (redisTemplate == null) {
  802 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  803 + }
  804 + return redisTemplate.opsForList().leftPop(key);
  805 + }
  806 +
  807 + /**
  808 + * 在键为 key 的 list中移除、最后一个元素
  809 + * @param key 键
  810 + * @return
  811 + */
  812 + public static Object lrightPop(String key) {
  813 + if (redisTemplate == null) {
  814 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  815 + }
  816 + return redisTemplate.opsForList().rightPop(key);
  817 + }
  818 +
  819 + /**
  820 + * 模糊查询
  821 + * @param key 键
  822 + * @return true / false
  823 + */
  824 + public static List<Object> keys(String key) {
  825 + if (redisTemplate == null) {
  826 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  827 + }
  828 + try {
  829 + Set<String> set = redisTemplate.keys(key);
  830 + return new ArrayList<>(set);
  831 + } catch (Exception e) {
  832 + e.printStackTrace();
  833 + return null;
  834 + }
  835 + }
  836 +
  837 +
  838 + /**
  839 + * 模糊查询
  840 + * @param query 查询参数
  841 + * @return
  842 + */
  843 +// public static List<Object> scan(String query) {
  844 +// List<Object> result = new ArrayList<>();
  845 +// try {
  846 +// Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("field",
  847 +// ScanOptions.scanOptions().match(query).count(1000).build());
  848 +// while (cursor.hasNext()) {
  849 +// Map.Entry<Object,Object> entry = cursor.next();
  850 +// result.add(entry.getKey());
  851 +// Object key = entry.getKey();
  852 +// Object valueSet = entry.getValue();
  853 +// }
  854 +// //关闭cursor
  855 +// cursor.close();
  856 +// } catch (Exception e) {
  857 +// e.printStackTrace();
  858 +// }
  859 +// return result;
  860 +// }
  861 +
  862 + /**
  863 + * 模糊查询
  864 + * @param query 查询参数
  865 + * @return
  866 + */
  867 + public static List<Object> scan(String query) {
  868 + if (redisTemplate == null) {
  869 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  870 + }
  871 + Set<String> resultKeys = (Set<String>) redisTemplate.execute((RedisCallback<Set<String>>) connection -> {
  872 + ScanOptions scanOptions = ScanOptions.scanOptions().match("*" + query + "*").count(1000).build();
  873 + Cursor<byte[]> scan = connection.scan(scanOptions);
  874 + Set<String> keys = new HashSet<>();
  875 + while (scan.hasNext()) {
  876 + byte[] next = scan.next();
  877 + keys.add(new String(next));
  878 + }
  879 + return keys;
  880 + });
  881 +
  882 + return new ArrayList<>(resultKeys);
  883 + }
  884 + public static List<Object> scan2(String query) {
  885 + if (redisTemplate == null) {
  886 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  887 + }
  888 + Set<String> keys = redisTemplate.keys(query);
  889 + return new ArrayList<>(keys);
  890 + }
  891 + // ============================== 消息发送与订阅 ==============================
  892 + public static void convertAndSend(String channel, JSONObject msg) {
  893 + if (redisTemplate == null) {
  894 + redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  895 + }
  896 + redisTemplate.convertAndSend(channel, msg);
  897 + }
  898 +
  899 +}
src/main/java/com/genersoft/iot/vmp/vmanager/bean/StreamContent.java
@@ -116,6 +116,9 @@ public class StreamContent { @@ -116,6 +116,9 @@ public class StreamContent {
116 if (streamInfo.getFmp4() != null) { 116 if (streamInfo.getFmp4() != null) {
117 this.fmp4 = streamInfo.getFmp4().getUrl(); 117 this.fmp4 = streamInfo.getFmp4().getUrl();
118 } 118 }
  119 + if (streamInfo.getHttps_fmp4() != null) {
  120 + this.https_fmp4 = streamInfo.getHttps_fmp4().getUrl();
  121 + }
119 if (streamInfo.getWs_fmp4() != null) { 122 if (streamInfo.getWs_fmp4() != null) {
120 this.ws_fmp4 = streamInfo.getWs_fmp4().getUrl(); 123 this.ws_fmp4 = streamInfo.getWs_fmp4().getUrl();
121 } 124 }