package com.fdkankan.redis.util; import cn.hutool.core.collection.CollUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.fdkankan.scene.httpclient.CustomHttpClient; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.*; @Component public class RedisClient { public final static String url_str_add = "/redis/string/add/"; public final static String url_str_get = "/redis/string/get/"; public final static String url_set_add = "/redis/set/add"; public final static String url_set_getall = "/redis/set/getall"; public final static String url_set_srem = "/redis/set/srem"; public final static String url_hash_hscan = "/redis/hash/hscan"; public final static String url_hash_add = "/redis/hash/add"; public final static String url_hash_hvals = "/redis/hash/hvals"; public final static String url_hash_hdel = "/redis/hash/hdel"; @Value("${redis.host}") private String host; @Value("${tieta.sysCode}") private String sysCode; @Value("${tieta.serverName}") private String serverName; @Resource private CustomHttpClient customHttpClient; public void add(String key, String value){ String url = host + url_str_add; Map params = new HashMap<>(); params.put("key", this.genKey(key)); params.put("value", value); JSONObject jsonObject = customHttpClient.postJson(url, params); if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString("status"))){ throw new RuntimeException("redis add string error"); } } public String get(String key){ String url = host + url_str_get; Map params = new HashMap<>(); params.put("key", this.genKey(key)); JSONObject jsonObject = customHttpClient.postJson(url, params); if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString("status"))){ throw new RuntimeException("redis get string error"); } return jsonObject.getString("data"); } public void sSet(String key, Set values){ String url = host + url_set_add; Map params = new HashMap<>(); params.put("key", this.genKey(key)); params.put("values", JSON.toJSONString(values)); JSONObject jsonObject = customHttpClient.postJson(url, params); if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString("status"))){ throw new RuntimeException("redis add set error"); } } public Set sGet(String key){ String url = host + url_set_getall; Map params = new HashMap<>(); params.put("key", this.genKey(key)); JSONObject jsonObject = customHttpClient.postJson(url, params); if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString("status"))){ throw new RuntimeException("redis set getall error"); } List data = jsonObject.getJSONArray("data").toJavaList(String.class); return new HashSet<>(data); } public void setRemove(String key, Set values){ String url = host + url_set_srem; Map params = new HashMap<>(); params.put("key", this.genKey(key)); params.put("values", values); JSONObject jsonObject = customHttpClient.postJson(url, params); if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString("status"))){ throw new RuntimeException("redis set srem error"); } } public void hmset(String key, Map values){ String url = host + url_hash_add; Map params = new HashMap<>(); params.put("key", this.genKey(key)); params.put("values", values); JSONObject jsonObject = customHttpClient.postJson(url, params); if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString("status"))){ throw new RuntimeException("redis hash add error"); } } public Map hmget(String key){ String url = host + url_hash_hscan; Map params = new HashMap<>(); params.put("key", this.genKey(key)); JSONObject jsonObject = customHttpClient.postJson(url, params); if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString("status"))){ throw new RuntimeException("redis hash hscan error"); } JSONObject data = jsonObject.getJSONObject("data"); // 转换为Map Map map = new HashMap<>(); for (String k : data.keySet()) { map.put(key, jsonObject.getString(key)); } return map; } public List hMultiGet(String key){ String url = host + url_hash_hvals; Map params = new HashMap<>(); params.put("key", this.genKey(key)); JSONObject jsonObject = customHttpClient.postJson(url, params); if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString("status"))){ throw new RuntimeException("redis hash get hvals error"); } List data = jsonObject.getJSONArray("data").toJavaList(String.class); return data; } public void hdel(String key, List fields){ if(CollUtil.isEmpty(fields)){ return; } fields.stream().forEach(field->{ Map params = new HashMap<>(); params.put("key", this.genKey(key)); params.put("field", field); String url = host + url_hash_hdel; JSONObject jsonObject = customHttpClient.postJson(url, params); if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString("status"))){ throw new RuntimeException("redis hash hdel error"); } }); } private String genKey(String key){ return sysCode + "_" + serverName + "_" + key; } }