aboutsummaryrefslogtreecommitdiffstats
path: root/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/dao/RedisAccessWrapper.java
diff options
context:
space:
mode:
authorHuabingZhao <zhao.huabing@zte.com.cn>2017-07-25 15:18:33 +0800
committerHuabingZhao <zhao.huabing@zte.com.cn>2017-07-25 18:11:59 +0800
commit672f3d40be83d9e380fd7be4b674d5e8d5fa36de (patch)
tree43105e1d5e2ba8e8accea8648e57e1cf87db3f00 /apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/dao/RedisAccessWrapper.java
parent41d3db15a8e1a0496f9c2a5e15db2998a32bb9bf (diff)
Divide the MSB source codes into two repos
Change-Id: Ie76d545b214a8ce5191f215350a623e1529983d9 Issue-id: MSB-5 Signed-off-by: HuabingZhao <zhao.huabing@zte.com.cn>
Diffstat (limited to 'apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/dao/RedisAccessWrapper.java')
-rw-r--r--apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/dao/RedisAccessWrapper.java133
1 files changed, 133 insertions, 0 deletions
diff --git a/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/dao/RedisAccessWrapper.java b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/dao/RedisAccessWrapper.java
new file mode 100644
index 0000000..06799b1
--- /dev/null
+++ b/apiroute/apiroute-service/src/main/java/org/onap/msb/apiroute/wrapper/dao/RedisAccessWrapper.java
@@ -0,0 +1,133 @@
+package org.onap.msb.apiroute.wrapper.dao;
+
+import org.onap.msb.apiroute.wrapper.util.JedisUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import redis.clients.jedis.Jedis;
+import redis.clients.jedis.ScanParams;
+import redis.clients.jedis.ScanResult;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+public class RedisAccessWrapper {
+ private static final Logger LOGGER = LoggerFactory.getLogger(RedisAccessWrapper.class);
+ //An iteration starts when the cursor is set to 0
+ private static final String REDIS_SCAN_POINTER_NEW_ITERATION = "0";
+ //An iteration terminated when the cursor returned by the server is 0
+ private static final String REDIS_SCAN_POINTER_ITERATION_END = "0";
+ private static final int REDIS_SCAN_COUNT = 50;
+
+
+ public static void save(String key,String value) throws Exception {
+ Jedis jedis = null;
+ try {
+ jedis = JedisUtil.borrowJedisInstance();
+ jedis.set(key,value);
+ } finally {
+ JedisUtil.returnJedisInstance(jedis);
+ }
+ }
+
+ public static String query(String key) throws Exception {
+ Jedis jedis = null;
+ String value = null;
+ try {
+ jedis = JedisUtil.borrowJedisInstance();
+ value = jedis.get(key);
+ }finally {
+ JedisUtil.returnJedisInstance(jedis);
+ }
+ return value;
+ }
+
+ public static long delete(String key) throws Exception {
+ Jedis jedis = null;
+ long reply = 0L;
+ try {
+ jedis = JedisUtil.borrowJedisInstance();
+ reply = jedis.del(key);
+ } finally {
+ JedisUtil.returnJedisInstance(jedis);
+ }
+ return reply;
+ }
+
+ public static boolean isExist(String key) throws Exception {
+ boolean isExist = false;
+ Jedis jedis = null;
+ try {
+ jedis = JedisUtil.borrowJedisInstance();
+ isExist = jedis.exists(key);
+ } finally {
+ JedisUtil.returnJedisInstance(jedis);
+ }
+ return isExist;
+ }
+
+ public static List<String> queryMultiKeys(String keyPattern) throws Exception {
+ Set<String> keySet = filterKeys(keyPattern);
+ List<String> valueList = new ArrayList<>();
+ Jedis jedis = null;
+ try {
+ jedis = JedisUtil.borrowJedisInstance();
+ for(String key : keySet){
+ String value = jedis.get(key);
+ if(value !=null && !"".equals(value)){
+ valueList.add(value);
+ }
+ }
+ } finally {
+ JedisUtil.returnJedisInstance(jedis);
+ }
+ return valueList;
+ }
+
+ public static long deleteMultiKeys(String keyPattern) throws Exception {
+ Set<String> keySet = filterKeys(keyPattern);
+ long replySum = 0L;
+ Jedis jedis = null;
+ try {
+ jedis = JedisUtil.borrowJedisInstance();
+ for(String key : keySet){
+ long reply = jedis.del(key);
+ replySum = replySum + reply;
+ }
+ } finally {
+ JedisUtil.returnJedisInstance(jedis);
+ }
+ return replySum;
+ }
+
+ /**
+ * filter the keys according to the given pattern
+ * using "scan" instead of using "keys", incrementally iterate the keys space
+ * @param pattern the input filter pattern
+ * @return the matched keys set
+ */
+ public static Set<String> filterKeys(String pattern) throws Exception{
+ long start = System.currentTimeMillis();
+ Jedis jedis = null;
+ Set<String> filteredKeys = new HashSet<>();
+ ScanParams scanParams = new ScanParams();
+ scanParams.match(pattern);
+ scanParams.count(REDIS_SCAN_COUNT);
+ try {
+ jedis = JedisUtil.borrowJedisInstance();
+ ScanResult<String> scanResult = jedis.scan(REDIS_SCAN_POINTER_NEW_ITERATION,scanParams);
+ filteredKeys.addAll(scanResult.getResult());
+ while(!scanResult.getStringCursor().equals(REDIS_SCAN_POINTER_ITERATION_END)){
+ scanResult = jedis.scan(scanResult.getStringCursor(),scanParams);
+ filteredKeys.addAll(scanResult.getResult());
+ }
+ } finally {
+ JedisUtil.returnJedisInstance(jedis);
+ }
+ long end = System.currentTimeMillis();
+ long costTime = end-start;
+ LOGGER.info("filterKeys " + pattern + " count:" + filteredKeys.size() + " cost: " + costTime);
+ return filteredKeys;
+ }
+}