记得上下班打卡 | git大法好,push需谨慎

Commit 6f5a7c2a authored by anjiabin's avatar anjiabin

redis-队列多数据源

parent 98595dfb
...@@ -39,6 +39,8 @@ public abstract class AbstractRedisConfig { ...@@ -39,6 +39,8 @@ public abstract class AbstractRedisConfig {
public Map<Integer, RedisTemplate<String, Object>> redisTemplateMap = new HashMap<>(); public Map<Integer, RedisTemplate<String, Object>> redisTemplateMap = new HashMap<>();
private StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
abstract String getHost(); abstract String getHost();
abstract int getPort(); abstract int getPort();
abstract String getPassword(); abstract String getPassword();
...@@ -69,6 +71,21 @@ public abstract class AbstractRedisConfig { ...@@ -69,6 +71,21 @@ public abstract class AbstractRedisConfig {
redisTemplateMap.put(defaultDb, getRedisTemplate(defaultDb)); redisTemplateMap.put(defaultDb, getRedisTemplate(defaultDb));
} }
log.info("###### END 初始化 Redis 连接池 END ######"); log.info("###### END 初始化 Redis 连接池 END ######");
log.info("###### START 初始化 Redis-queue "+this.getClass().getSimpleName()+"连接池 START ######");
//初始化队列
LettuceConnectionFactory factory = null;
if(totalDbs==1){
log.info("###### 正在加载Redis-queue-db-" + defaultDb + " ######");
factory = getDbFactory(defaultDb);
}else{
log.info("###### 正在加载Redis-queue-db-" + (totalDbs-1) + " ######");
factory = getDbFactory(totalDbs-1);
}
stringRedisTemplate.setConnectionFactory(factory);
stringRedisTemplate.afterPropertiesSet();
log.info("###### END 初始化 Redis-queue 连接池 END ######");
} }
private RedisTemplate<String, Object> getRedisTemplate(int dbNo) { private RedisTemplate<String, Object> getRedisTemplate(int dbNo) {
...@@ -127,22 +144,26 @@ public abstract class AbstractRedisConfig { ...@@ -127,22 +144,26 @@ public abstract class AbstractRedisConfig {
// } // }
public StringRedisTemplate getStringRedisTemplate(){ public StringRedisTemplate getStringRedisTemplate(){
if(StringUtils.isEmpty(getHost())||getHost().equalsIgnoreCase("null")){ return stringRedisTemplate;
log.info("无配置,不需要初始化!");
return null;
}
LettuceConnectionFactory factory = null;
if(totalDbs==1){
factory = getDbFactory(defaultDb);
}else{
factory = getDbFactory(totalDbs-1);
}
StringRedisTemplate redisTemplate = new StringRedisTemplate();
redisTemplate.setConnectionFactory(factory);
redisTemplate.afterPropertiesSet();
return redisTemplate;
} }
// public StringRedisTemplate getDefaultStringRedisTemplate(){
// if(StringUtils.isEmpty(getHost())||getHost().equalsIgnoreCase("null")){
// log.info("无配置,不需要初始化!");
// return null;
// }
// LettuceConnectionFactory factory = null;
// if(totalDbs==1){
// factory = getDbFactory(defaultDb);
// }else{
// factory = getDbFactory(totalDbs-1);
// }
// StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
// stringRedisTemplate.setConnectionFactory(factory);
// stringRedisTemplate.afterPropertiesSet();
// return stringRedisTemplate;
// }
private void setSerializer(RedisTemplate<String, Object> template) { private void setSerializer(RedisTemplate<String, Object> template) {
Jackson2JsonRedisSerializer j2jrs = new Jackson2JsonRedisSerializer(Object.class); Jackson2JsonRedisSerializer j2jrs = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper(); ObjectMapper om = new ObjectMapper();
......
package com.liquidnet.common.cache.redis.config;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import java.util.List;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: 队列redis
* @class: RedisStreamQueueConfig
* @Package com.liquidnet.common.cache.redis.config
* @Copyright: LightNet @ Copyright (c) 2022
* @date 2022/6/14 15:10
*/
@Slf4j
@Configuration
public class RedisQueueConfig extends AbstractRedisConfig{
@Value("${spring.redis.queue.host:null}")
private String host;
@Value("${spring.redis.queue.port:-1}")
private int port;
@Value("${spring.redis.queue.password:null}")
private String password;
@Value("${spring.redis.queue.lettuce.pool.max-active:-1}")
private int maxActive;
@Value("${spring.redis.queue.lettuce.pool.max-idle:-1}")
private int maxIdle;
@Value("${spring.redis.queue.lettuce.pool.min-idle:-1}")
private int minIdle;
@Value("${spring.redis.queue.lettuce.pool.max-wait:-1}")
private int maxWait;
@Value("${spring.redis.queue.dbs:${spring.redis.queue.database:-1}}")
private List<Integer> dbs;
String getHost(){
return this.host;
}
int getPort(){
return this.port;
}
String getPassword(){
return this.password;
}
int getMaxActive(){
return this.maxActive;
}
int getMaxIdle(){
return this.maxIdle;
}
int getMinIdle(){
return this.minIdle;
}
int getMaxWait(){
return this.maxWait;
}
List<Integer> getDbs(){
return this.dbs;
}
}
...@@ -35,6 +35,9 @@ public class RedisDataSourceUtil { ...@@ -35,6 +35,9 @@ public class RedisDataSourceUtil {
@Autowired @Autowired
private RedisGalaxyUtil redisGalaxyUtil; private RedisGalaxyUtil redisGalaxyUtil;
@Autowired
private RedisQueueUtil redisQueueUtil;
public AbstractRedisUtil getRedisKylinUtil() { public AbstractRedisUtil getRedisKylinUtil() {
return this.redisKylinUtil; return this.redisKylinUtil;
} }
...@@ -66,4 +69,8 @@ public class RedisDataSourceUtil { ...@@ -66,4 +69,8 @@ public class RedisDataSourceUtil {
public AbstractRedisUtil getRedisGalaxyUtil(){ public AbstractRedisUtil getRedisGalaxyUtil(){
return this.redisGalaxyUtil; return this.redisGalaxyUtil;
} }
public AbstractRedisUtil getRedisQueueUtil(){
return this.redisQueueUtil;
}
} }
package com.liquidnet.common.cache.redis.util;
import com.liquidnet.common.cache.redis.config.AbstractRedisConfig;
import com.liquidnet.common.cache.redis.config.RedisQueueConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: RedisQueueUtil
* @Package com.liquidnet.common.cache.redis.util
* @Copyright: LightNet @ Copyright (c) 2022
* @date 2022/6/14 15:30
*/
@Slf4j
@Component("redisQueueUtil")
public final class RedisQueueUtil extends AbstractRedisUtil{
@Autowired
private RedisQueueConfig redisConfig;
@Override
public int getDbs() {
log.info("RedisQueueUtil.totalDbs===",redisConfig.totalDbs);
return redisConfig.totalDbs;
}
@Override
AbstractRedisConfig getRedisConfig() {
return this.redisConfig;
}
}
\ No newline at end of file
...@@ -31,6 +31,11 @@ liquidnet: ...@@ -31,6 +31,11 @@ liquidnet:
knife4j: knife4j:
disable: false disable: false
redis: redis:
queue:
database: 15
host: 39.107.71.112
port: 6379
password: 3Xa%8p
kylin: kylin:
dbs: 0,16 dbs: 0,16
database: 15 database: 15
......
...@@ -31,6 +31,11 @@ liquidnet: ...@@ -31,6 +31,11 @@ liquidnet:
knife4j: knife4j:
disable: false disable: false
redis: redis:
queue:
database: 255
host: r-2zeucai3yj2t0f4nmzpd.redis.rds.aliyuncs.com
port: 6380
password: 7eoK2XehKqF1
kylin: kylin:
database: 255 database: 255
dbs: 0,256 dbs: 0,256
......
...@@ -75,6 +75,17 @@ spring: ...@@ -75,6 +75,17 @@ spring:
- org.springframework.cloud.bus.BusAutoConfiguration - org.springframework.cloud.bus.BusAutoConfiguration
- org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration - org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration
redis: redis:
queue:
database: ${liquidnet.redis.queue.database}
port: ${liquidnet.redis.queue.port}
host: ${liquidnet.redis.queue.host}
password: ${liquidnet.redis.queue.password}
lettuce:
pool:
max-active: 8
max-wait: -1
max-idle: 8
min-idle: 0
database: 15 database: 15
dbs: ${liquidnet.redis.goblin.dbs} dbs: ${liquidnet.redis.goblin.dbs}
port: ${liquidnet.redis.goblin.port} port: ${liquidnet.redis.goblin.port}
......
package com.liquidnet.service.galaxy.utils; package com.liquidnet.service.galaxy.utils;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
...@@ -16,10 +17,10 @@ import org.springframework.stereotype.Component; ...@@ -16,10 +17,10 @@ import org.springframework.stereotype.Component;
@Component @Component
public class QueueUtil extends AbstractQueueUtil{ public class QueueUtil extends AbstractQueueUtil{
@Autowired @Autowired
StringRedisTemplate stringRedisTemplate; private RedisDataSourceUtil redisDataSourceUtil;
@Override @Override
StringRedisTemplate getStringRedisTemplate() { StringRedisTemplate getStringRedisTemplate() {
return stringRedisTemplate; return redisDataSourceUtil.getRedisQueueUtil().getStringRedisTemplate();
} }
} }
package com.liquidnet.service.goblin.service.impl.inner; package com.liquidnet.service.goblin.service.impl.inner;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
...@@ -21,7 +22,6 @@ import org.springframework.data.mongodb.core.query.Criteria; ...@@ -21,7 +22,6 @@ import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update; import org.springframework.data.mongodb.core.query.Update;
import org.springframework.data.redis.connection.stream.StreamRecords; import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -40,8 +40,9 @@ public class GoblinQueBizArtworkClqService { ...@@ -40,8 +40,9 @@ public class GoblinQueBizArtworkClqService {
GoblinMongoUtils goblinMongoUtils; GoblinMongoUtils goblinMongoUtils;
@Autowired @Autowired
MongoTemplate mongoTemplate; MongoTemplate mongoTemplate;
@Autowired @Autowired
StringRedisTemplate stringRedisTemplate; private RedisDataSourceUtil redisDataSourceUtil;
@Resource(name = "galaxyArtworkServiceImpl") @Resource(name = "galaxyArtworkServiceImpl")
private IGalaxyArtworkService galaxyArtworkService; private IGalaxyArtworkService galaxyArtworkService;
...@@ -90,7 +91,7 @@ public class GoblinQueBizArtworkClqService { ...@@ -90,7 +91,7 @@ public class GoblinQueBizArtworkClqService {
updateGoodsSkuNftObjs.add(new Object[]{1, seriesId, txHash, nftHash, chainTimestamp, now, skuId}); updateGoodsSkuNftObjs.add(new Object[]{1, seriesId, txHash, nftHash, chainTimestamp, now, skuId});
sqlUpdateMap.put(MQConst.QUEUE_MESSAGE_KEY, SqlMapping.gets(toMqSqls, updateGoodsSkuNftObjs)); sqlUpdateMap.put(MQConst.QUEUE_MESSAGE_KEY, SqlMapping.gets(toMqSqls, updateGoodsSkuNftObjs));
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(sqlUpdateMap).withStreamKey(MQConst.GoblinQueue.SQL_GOODS.getKey())); redisDataSourceUtil.getRedisQueueUtil().getStringRedisTemplate().opsForStream().add(StreamRecords.mapBacked(sqlUpdateMap).withStreamKey(MQConst.GoblinQueue.SQL_GOODS.getKey()));
} catch (Exception e) { } catch (Exception e) {
log.error("Ex.NFT声明查询:处理异常[skuId={}]", skuId, e); log.error("Ex.NFT声明查询:处理异常[skuId={}]", skuId, e);
queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_CLQ.getKey(), skuId); queueUtils.sendMsgByRedis(MQConst.GoblinQueue.BIZ_ARTWORK_CLQ.getKey(), skuId);
......
package com.liquidnet.service.goblin.service.impl.inner; package com.liquidnet.service.goblin.service.impl.inner;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.commons.lang.util.JsonUtils; import com.liquidnet.commons.lang.util.JsonUtils;
import com.liquidnet.service.base.ResponseDto; import com.liquidnet.service.base.ResponseDto;
...@@ -25,7 +26,6 @@ import org.springframework.data.mongodb.core.query.Query; ...@@ -25,7 +26,6 @@ import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update; import org.springframework.data.mongodb.core.query.Update;
import org.springframework.data.redis.connection.stream.StreamRecords; import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StreamOperations; import org.springframework.data.redis.core.StreamOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
...@@ -44,8 +44,9 @@ public class GoblinQueBizArtworkUplService { ...@@ -44,8 +44,9 @@ public class GoblinQueBizArtworkUplService {
GoblinMongoUtils goblinMongoUtils; GoblinMongoUtils goblinMongoUtils;
@Autowired @Autowired
MongoTemplate mongoTemplate; MongoTemplate mongoTemplate;
@Autowired @Autowired
StringRedisTemplate stringRedisTemplate; private RedisDataSourceUtil redisDataSourceUtil;
@Resource(name = "galaxyArtworkServiceImpl") @Resource(name = "galaxyArtworkServiceImpl")
private IGalaxyArtworkService galaxyArtworkService; private IGalaxyArtworkService galaxyArtworkService;
...@@ -118,7 +119,7 @@ public class GoblinQueBizArtworkUplService { ...@@ -118,7 +119,7 @@ public class GoblinQueBizArtworkUplService {
sqlUpdateMap.put(MQConst.QUEUE_MESSAGE_KEY, SqlMapping.gets(toMqSqls, updateGoodsSkuNftObjs)); sqlUpdateMap.put(MQConst.QUEUE_MESSAGE_KEY, SqlMapping.gets(toMqSqls, updateGoodsSkuNftObjs));
StreamOperations<String, Object, Object> streamOperations = stringRedisTemplate.opsForStream(); StreamOperations<String, Object, Object> streamOperations = redisDataSourceUtil.getRedisQueueUtil().getStringRedisTemplate().opsForStream();
streamOperations.add(StreamRecords.mapBacked(sqlUpdateMap).withStreamKey(MQConst.GoblinQueue.SQL_GOODS.getKey())); streamOperations.add(StreamRecords.mapBacked(sqlUpdateMap).withStreamKey(MQConst.GoblinQueue.SQL_GOODS.getKey()));
HashMap<String, String> toQueueBeClaimQueryMsg = CollectionUtil.mapStringString(); HashMap<String, String> toQueueBeClaimQueryMsg = CollectionUtil.mapStringString();
......
package com.liquidnet.service.goblin.util; package com.liquidnet.service.goblin.util;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import com.liquidnet.commons.lang.util.CollectionUtil; import com.liquidnet.commons.lang.util.CollectionUtil;
import com.liquidnet.service.base.constant.MQConst; import com.liquidnet.service.base.constant.MQConst;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.stream.StreamRecords; import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.HashMap; import java.util.HashMap;
...@@ -14,8 +14,9 @@ public class QueueUtils { ...@@ -14,8 +14,9 @@ public class QueueUtils {
// @Autowired // @Autowired
// private RabbitTemplate rabbitTemplate; // private RabbitTemplate rabbitTemplate;
@Autowired @Autowired
StringRedisTemplate stringRedisTemplate; private RedisDataSourceUtil redisDataSourceUtil;
/** /**
* 发送消息 - RABBIT * 发送消息 - RABBIT
...@@ -37,7 +38,7 @@ public class QueueUtils { ...@@ -37,7 +38,7 @@ public class QueueUtils {
public void sendMsgByRedis(String streamKey, String jsonMsg) { public void sendMsgByRedis(String streamKey, String jsonMsg) {
HashMap<String, String> map = CollectionUtil.mapStringString(); HashMap<String, String> map = CollectionUtil.mapStringString();
map.put(MQConst.QUEUE_MESSAGE_KEY, jsonMsg); map.put(MQConst.QUEUE_MESSAGE_KEY, jsonMsg);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey)); redisDataSourceUtil.getRedisQueueUtil().getStringRedisTemplate().opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(streamKey));
} }
/** /**
...@@ -55,7 +56,7 @@ public class QueueUtils { ...@@ -55,7 +56,7 @@ public class QueueUtils {
map.put(MQConst.QUEUE_MESSAGE_KEY, xlsPath); map.put(MQConst.QUEUE_MESSAGE_KEY, xlsPath);
map.put("type", type); map.put("type", type);
map.put("skuId", skuId); map.put("skuId", skuId);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(MQConst.GoblinQueue.GOBLIN_XLS_OPERA.getKey())); redisDataSourceUtil.getRedisQueueUtil().getStringRedisTemplate().opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(MQConst.GoblinQueue.GOBLIN_XLS_OPERA.getKey()));
} }
} }
...@@ -74,6 +75,6 @@ public class QueueUtils { ...@@ -74,6 +75,6 @@ public class QueueUtils {
map.put("listId", listId); map.put("listId", listId);
map.put("type", type); map.put("type", type);
map.put("skuId", skuId); map.put("skuId", skuId);
stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(MQConst.GoblinQueue.GOBLIN_XLS_OPERA.getKey())); redisDataSourceUtil.getRedisQueueUtil().getStringRedisTemplate().opsForStream().add(StreamRecords.mapBacked(map).withStreamKey(MQConst.GoblinQueue.GOBLIN_XLS_OPERA.getKey()));
} }
} }
package com.liquidnet.service.goblin.test;
import com.liquidnet.common.cache.redis.util.RedisDataSourceUtil;
import com.liquidnet.commons.lang.util.CollectionUtil;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.connection.stream.StreamRecords;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.HashMap;
/**
* @author AnJiabin <anjiabin@zhengzai.tv>
* @version V1.0
* @Description: TODO
* @class: TestResisQueue
* @Package com.liquidnet.service.goblin.test
* @Copyright: LightNet @ Copyright (c) 2022
* @date 2022/6/14 15:42
*/
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestResisQueue {
@Autowired
private RedisDataSourceUtil redisDataSourceUtil;
@Autowired
StringRedisTemplate stringRedisTemplate;
/**
* 兼容测试
*/
@Test
public void oldPringRedisInitInfo(){
redisDataSourceUtil.getRedisKylinUtil().set("testNldRedis","12345");
redisDataSourceUtil.getRedisKylinUtil().set("testoldRedis","12345");
System.out.println("getRedisKylinUtil.get==="+ redisDataSourceUtil.getRedisKylinUtil().get("testoldRedis"));
System.out.println("getRedisDragonUtil.totalDbs==="+ redisDataSourceUtil.getRedisDragonUtil().getDbs());
}
/**
* 兼容测试队列
*/
@Test
public void oldGetRedisQueue(){
String json = "{\n" +
" \"nftOrderPayId\": \"1234567890-order-022-008\",\n" +
" \"routerType\": \"zxinchain\",\n" +
" \"skuId\": \"1234567890-sku-022\",\n" +
" \"userId\": \"123456789-user-002\",\n" +
" \"buyTimestamp\":\"2022-04-12 13:50:12\"\n" +
"}";
HashMap<String, String> map = CollectionUtil.mapStringString();
map.put("message", json);
log.info("stringRedisTemplate.stream===",stringRedisTemplate.opsForStream().add(StreamRecords.mapBacked(map).withStreamKey("goblintest_old:stream:dragon-pay")));
json = "{\n" +
" \"nftOrderPayId\": \"1234567890-queue-022-008\",\n" +
" \"routerType\": \"zxinchain\",\n" +
" \"skuId\": \"1234567890-sku-022\",\n" +
" \"userId\": \"123456789-user-002\",\n" +
" \"buyTimestamp\":\"2022-04-12 13:50:12\"\n" +
"}";
map.put("message", json);
log.info("getRedisQueueUtil.stream===",redisDataSourceUtil.getRedisQueueUtil().getStringRedisTemplate().opsForStream().add(StreamRecords.mapBacked(map).withStreamKey("goblintest_new:stream:dragon-pay")));
// log.info("getRedisKylinUtil.stream===",redisDataSourceUtil.getRedisKylinUtil().getStringRedisTemplate().opsForStream().size("dragon:stream:dragon-pay"));
// log.info("getRedisDragonUtil.stream===",redisDataSourceUtil.getRedisDragonUtil().getStringRedisTemplate().opsForStream().size("dragon:stream:dragon-pay"));
// log.info("getRedisSweetUtil.stream===",redisDataSourceUtil.getRedisSweetUtil().getStringRedisTemplate().opsForStream().size("abc"));
// log.info("getRedisAdamUtil.stream===",redisDataSourceUtil.getRedisAdamUtil().getStringRedisTemplate().opsForStream().size("abc"));
// log.info("getRedisCandyUtil.stream===",redisDataSourceUtil.getRedisCandyUtil().getStringRedisTemplate().opsForStream().size("abc"));
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment