RedisClient.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package com.fdkankan.redis.util;
  2. import cn.hutool.http.HttpUtil;
  3. import com.alibaba.fastjson.JSON;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.fdkankan.project.tieta.httpclient.HttpClient;
  6. import lombok.Data;
  7. import lombok.extern.slf4j.Slf4j;
  8. import org.apache.ibatis.logging.Log;
  9. import org.springframework.beans.factory.annotation.Value;
  10. import org.springframework.stereotype.Component;
  11. import javax.annotation.Resource;
  12. import java.util.HashMap;
  13. import java.util.Map;
  14. import java.util.Objects;
  15. @Slf4j
  16. @Component
  17. public class RedisClient {
  18. public final static String url_str_add = "/redis/string/add/";
  19. public final static String url_str_get = "/redis/string/get/";
  20. public final static String url_str_del = "/redis/string/delete";
  21. public final static String URL_REDISSON_LOCKLEASETIME = "/redis/redisson/lockLeaseTime";
  22. public final static String URL_REDISSON_UNLOCK = "/redis/redisson/unlock";
  23. public final static String field_status = "status";
  24. @Value("${redis.host}")
  25. private String host;
  26. @Value("${tieta.sysCode}")
  27. private String sysCode;
  28. @Value("${tieta.serverName}")
  29. private String serverName;
  30. @Resource
  31. private HttpClient httpClient;
  32. public void add(String key, String value){
  33. String url = host + url_str_add;
  34. Map<String, Object> params = new HashMap<>();
  35. params.put("key", this.genKey(key));
  36. params.put("value", value);
  37. JSONObject jsonObject = httpClient.postJson(url, params);
  38. if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString(field_status))){
  39. throw new RuntimeException("redis add string error");
  40. }
  41. }
  42. public String get(String key){
  43. String url = host + url_str_get;
  44. Map<String, Object> params = new HashMap<>();
  45. params.put("key", this.genKey(key));
  46. JSONObject jsonObject = httpClient.postJson(url, params);
  47. if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString(field_status))){
  48. throw new RuntimeException("redis get string error");
  49. }
  50. return jsonObject.getString("data");
  51. }
  52. public String del(String key){
  53. String url = host + url_str_del;
  54. Map<String, Object> params = new HashMap<>();
  55. params.put("key", this.genKey(key));
  56. JSONObject jsonObject = httpClient.postJson(url, params);
  57. if(Objects.isNull(jsonObject) || !"0".equals(jsonObject.getString(field_status))){
  58. throw new RuntimeException("redis del string error");
  59. }
  60. return jsonObject.getString("data");
  61. }
  62. public Map<String, Object> lockLeaseTime(String key, long expirTime){
  63. Map<String, Object> result = new HashMap<>();
  64. result.put("lock", false);
  65. String url = host + URL_REDISSON_LOCKLEASETIME;
  66. Map<String, Object> params = new HashMap<>();
  67. params.put("lockName", this.genKey(key));
  68. params.put("leaseTime", expirTime);
  69. JSONObject jsonObject = httpClient.postJson(url, params);
  70. log.info("获取分布式锁,key:{}, result:{}", this.genKey(key), jsonObject);
  71. if(Objects.nonNull(jsonObject) && "0".equals(jsonObject.getString(field_status))){
  72. result.put("lock", true);
  73. result.put("uniqueFlag", jsonObject.getString("data"));
  74. }
  75. return result;
  76. }
  77. public boolean unLock(String key, String uniqueFlag){
  78. String url = host + URL_REDISSON_UNLOCK;
  79. Map<String, Object> params = new HashMap<>();
  80. params.put("lockName", this.genKey(key));
  81. params.put("uniqueFlag", uniqueFlag);
  82. JSONObject jsonObject = httpClient.postJson(url, params);
  83. log.info("释放分布式锁,key:{},uniqueFlag:{}, result:{}", this.genKey(key), uniqueFlag, jsonObject);
  84. if(Objects.nonNull(jsonObject) && "0".equals(jsonObject.getString(field_status))){
  85. return true;
  86. }
  87. return false;
  88. }
  89. private String genKey(String key){
  90. return sysCode + "_" + serverName + "_" + key;
  91. }
  92. }