From f664bea25bee4609721dd8fbbcc0205878772d9a Mon Sep 17 00:00:00 2001
From: puzhibing <393733352@qq.com>
Date: 星期六, 25 二月 2023 16:16:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/RedisUtil.java | 249 ++++++++++++++++++++++++++++++++++++-------------
1 files changed, 181 insertions(+), 68 deletions(-)
diff --git a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/RedisUtil.java b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/RedisUtil.java
index 8af7f66..e2750c2 100644
--- a/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/RedisUtil.java
+++ b/driver/guns-admin/src/main/java/com/supersavedriving/driver/modular/system/util/RedisUtil.java
@@ -1,16 +1,15 @@
package com.supersavedriving.driver.modular.system.util;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
import com.supersavedriving.driver.core.util.ToolUtil;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
import org.springframework.stereotype.Component;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.util.MultiValueMap;
-import org.springframework.web.client.RestTemplate;
+import org.springframework.util.StringUtils;
+import redis.clients.jedis.Jedis;
+import redis.clients.jedis.JedisPool;
+import redis.clients.jedis.Pipeline;
+
+import java.io.IOException;
+import java.util.*;
/**
@@ -20,7 +19,9 @@
public class RedisUtil {
@Autowired
- private RestTemplate internalRestTemplate;
+ private JedisPool jedisPool;
+
+ private Timer timer;
/**
@@ -29,23 +30,11 @@
* @param value
*/
public void setStrValue(String key, String value){
- if(ToolUtil.isNotEmpty(key)){
- //发送验证码短信
- HttpHeaders headers = new HttpHeaders();
- // 以表单的方式提交
- headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
- //将请求头部和参数合成一个请求
- MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
- params.add("key", key);
- params.add("value", value);
- HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
- String s = internalRestTemplate.postForObject("http://zuul-gateway/redis/setValue_", requestEntity, String.class);
- JSONObject jsonObject = JSON.parseObject(s, JSONObject.class);
- if(jsonObject.getIntValue("code") != 200){
- System.err.println("调用redis出错了");
- }
+ if(ToolUtil.isNotEmpty(key) && ToolUtil.isNotEmpty(value)){
+ Jedis resource = jedisPool.getResource();
+ String set = resource.set(key, value);
+ closeJedis(resource);
}
-
}
@@ -56,22 +45,10 @@
* @param time 秒
*/
public void setStrValue(String key, String value, int time){
- if(ToolUtil.isNotEmpty(key)){
- //发送验证码短信
- HttpHeaders headers = new HttpHeaders();
- // 以表单的方式提交
- headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
- //将请求头部和参数合成一个请求
- MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
- params.add("key", key);
- params.add("value", value);
- params.add("time", String.valueOf(time));
- HttpEntity<MultiValueMap<String, String>> requestEntity = new HttpEntity<>(params, headers);
- String s = internalRestTemplate.postForObject("http://zuul-gateway/redis/setValue", requestEntity, String.class);
- JSONObject jsonObject = JSON.parseObject(s, JSONObject.class);
- if(jsonObject.getIntValue("code") != 200){
- System.err.println("调用redis出错了");
- }
+ if(ToolUtil.isNotEmpty(key) && ToolUtil.isNotEmpty(value)){
+ Jedis resource = jedisPool.getResource();
+ String setex = resource.setex(key, time, value);
+ closeJedis(resource);
}
}
@@ -83,19 +60,43 @@
*/
public String getValue(String key){
if(ToolUtil.isNotEmpty(key)){
- HttpHeaders headers = new HttpHeaders();
- // 以表单的方式提交
- headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
- //将请求头部和参数合成一个请求
- MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
- params.add("key", key);
- HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
- String s = internalRestTemplate.postForObject("http://zuul-gateway/redis/getValue",requestEntity , String.class);
- JSONObject jsonObject = JSON.parseObject(s, JSONObject.class);
- if(jsonObject.getIntValue("code") != 200){
- System.err.println("调用redis出错了");
+ Jedis resource = jedisPool.getResource();
+ String data = resource.get(key);
+ closeJedis(resource);
+ return data;
+ }
+ return null;
+ }
+
+
+ /**
+ * 批量获取
+ * @param kes
+ * @return
+ */
+ public List<Object> getValues(List<String> kes){
+ if(null != kes){
+ Jedis resource = jedisPool.getResource();
+ Pipeline pipelined = resource.pipelined();
+ for(String key : kes){
+ pipelined.get(key);
}
- return jsonObject.getString("data");
+ List<Object> list = pipelined.syncAndReturnAll();
+
+ closeJedis(resource);
+ pipelined.clear();
+ try {
+ pipelined.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ List<Object> data = new ArrayList<>();
+ for(Object o : list){
+ if(null != o){
+ data.add(o);
+ }
+ }
+ return data;
}
return null;
}
@@ -105,22 +106,134 @@
* 删除key
* @param key
*/
- public String remove(String key){
+ public void remove(String key){
if(ToolUtil.isNotEmpty(key)){
- HttpHeaders headers = new HttpHeaders();
- // 以表单的方式提交
- headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
- //将请求头部和参数合成一个请求
- MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
- params.add("key", key);
- HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
- String s = internalRestTemplate.postForObject("http://zuul-gateway/redis/remove",requestEntity , String.class);
- JSONObject jsonObject = JSON.parseObject(s, JSONObject.class);
- if(jsonObject.getIntValue("code") != 200){
- System.err.println("调用redis出错了");
- }
- return jsonObject.getString("data");
+ Jedis resource = jedisPool.getResource();
+ Long del = resource.del(key);
+ closeJedis(resource);
}
- return null;
+ }
+
+
+ /**
+ * 向集合key添加数据
+ * @param key
+ * @param members
+ */
+ public void addSetValue(String key, String...members){
+ if(ToolUtil.isNotEmpty(key) && ToolUtil.isNotEmpty(members)){
+ Jedis resource = jedisPool.getResource();
+ Long sadd = resource.sadd(key, members);
+ resource.close();
+ }
+ }
+
+
+ /**
+ * 返回Set集合数据
+ * @param key
+ * @return
+ */
+ public Set<String> getSetAllValue(String key){
+ Set<String> smembers = new HashSet<>();
+ if(ToolUtil.isNotEmpty(key)){
+ Jedis resource = jedisPool.getResource();
+ smembers = resource.smembers(key);
+ resource.close();
+ }
+ return smembers;
+ }
+
+
+ /**
+ * 删除Set集合中的值
+ * @param key
+ * @param members
+ */
+ public void delSetValue(String key, String...members){
+ if(ToolUtil.isNotEmpty(key) && ToolUtil.isNotEmpty(members)){
+ Jedis resource = jedisPool.getResource();
+ Long sadd = resource.srem(key, members);
+ resource.close();
+ }
+ }
+
+
+ /**
+ * 删除资源
+ * @param jedis
+ */
+ public void closeJedis(Jedis jedis){
+ if(null != jedis){
+ jedis.close();
+ }
+ }
+
+
+ /**
+ * redis加锁
+ * @param key
+ * @param value
+ * @param time
+ * @return
+ */
+ public boolean lock(String key, String value, int time){
+ if(!StringUtils.isEmpty(key)){
+ key += "_lock";
+ Jedis resource = jedisPool.getResource();
+ String set = resource.set(key, value, "nx", "ex", time);
+ if("OK".equals(set)){
+ String finalKey = key;
+ timer = new Timer();
+ timer.schedule(new TimerTask() {
+ @Override
+ public void run() {
+ System.err.println("定时任务启动");
+ Jedis resource = jedisPool.getResource();
+ resource.setex(finalKey, time, value);
+ resource.close();
+ }
+ }, 1000, 500);
+ }
+ resource.close();
+ return "OK".equals(set) ? true : false;
+ }
+ return false;
+ }
+
+ /**
+ * 获取redis锁
+ * @param time
+ * @return
+ */
+ public boolean lock(int time){
+ String uuid = UUID.randomUUID().toString();
+ return lock("redis", uuid, time);
+ }
+
+
+ /**
+ * redis释放锁
+ * @param key
+ * @return
+ */
+ public boolean unlock(String key){
+ if(!StringUtils.isEmpty(key)){
+ key += "_lock";
+ Jedis resource = jedisPool.getResource();
+ timer.cancel();//取消定时任务
+ Long del = resource.del(key);
+ resource.close();
+ return del != 0 ? true : false;
+ }
+ return false;
+ }
+
+ /**
+ * 删除锁
+ * @return
+ */
+ public boolean unlock(){
+ return unlock("redis");
}
}
--
Gitblit v1.7.1