From 18e3b424d603aed47408081bf66398532b24df12 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期日, 28 四月 2024 12:31:59 +0800
Subject: [PATCH] fix 修复 兼容redis5.0出现的问题

---
 ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java |   67 +++++++++++++++++++++++++++++++++
 1 files changed, 66 insertions(+), 1 deletions(-)

diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java
index ccc0368..3fc3aac 100644
--- a/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java
+++ b/ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java
@@ -107,7 +107,11 @@
                 bucket.setAndKeepTTL(value);
             } catch (Exception e) {
                 long timeToLive = bucket.remainTimeToLive();
-                setCacheObject(key, value, Duration.ofMillis(timeToLive));
+                if (timeToLive == -1) {
+                    setCacheObject(key, value);
+                } else {
+                    setCacheObject(key, value, Duration.ofMillis(timeToLive));
+                }
             }
         } else {
             bucket.set(value);
@@ -127,6 +131,30 @@
         bucket.setAsync(value);
         bucket.expireAsync(duration);
         batch.execute();
+    }
+
+    /**
+     * 濡傛灉涓嶅瓨鍦ㄥ垯璁剧疆 骞惰繑鍥� true 濡傛灉瀛樺湪鍒欒繑鍥� false
+     *
+     * @param key   缂撳瓨鐨勯敭鍊�
+     * @param value 缂撳瓨鐨勫��
+     * @return set鎴愬姛鎴栧け璐�
+     */
+    public static <T> boolean setObjectIfAbsent(final String key, final T value, final Duration duration) {
+        RBucket<T> bucket = CLIENT.getBucket(key);
+        return bucket.setIfAbsent(value, duration);
+    }
+
+    /**
+     * 濡傛灉瀛樺湪鍒欒缃� 骞惰繑鍥� true 濡傛灉瀛樺湪鍒欒繑鍥� false
+     *
+     * @param key   缂撳瓨鐨勯敭鍊�
+     * @param value 缂撳瓨鐨勫��
+     * @return set鎴愬姛鎴栧け璐�
+     */
+    public static <T> boolean setObjectIfExists(final String key, final T value, final Duration duration) {
+        RBucket<T> bucket = CLIENT.getBucket(key);
+        return bucket.setIfExists(value, duration);
     }
 
     /**
@@ -231,6 +259,18 @@
     }
 
     /**
+     * 杩藉姞缂撳瓨List鏁版嵁
+     *
+     * @param key  缂撳瓨鐨勯敭鍊�
+     * @param data 寰呯紦瀛樼殑鏁版嵁
+     * @return 缂撳瓨鐨勫璞�
+     */
+    public static <T> boolean addCacheList(final String key, final T data) {
+        RList<T> rList = CLIENT.getList(key);
+        return rList.add(data);
+    }
+
+    /**
      * 娉ㄥ唽List鐩戝惉鍣�
      * <p>
      * key 鐩戝惉鍣ㄩ渶寮�鍚� `notify-keyspace-events` 绛� redis 鐩稿叧閰嶇疆
@@ -255,6 +295,19 @@
     }
 
     /**
+     * 鑾峰緱缂撳瓨鐨刲ist瀵硅薄(鑼冨洿)
+     *
+     * @param key  缂撳瓨鐨勯敭鍊�
+     * @param form 璧峰涓嬫爣
+     * @param to   鎴涓嬫爣
+     * @return 缂撳瓨閿�煎搴旂殑鏁版嵁
+     */
+    public static <T> List<T> getCacheListRange(final String key, int form, int to) {
+        RList<T> rList = CLIENT.getList(key);
+        return rList.range(form, to);
+    }
+
+    /**
      * 缂撳瓨Set
      *
      * @param key     缂撳瓨閿��
@@ -267,6 +320,18 @@
     }
 
     /**
+     * 杩藉姞缂撳瓨Set鏁版嵁
+     *
+     * @param key  缂撳瓨鐨勯敭鍊�
+     * @param data 寰呯紦瀛樼殑鏁版嵁
+     * @return 缂撳瓨鐨勫璞�
+     */
+    public static <T> boolean addCacheSet(final String key, final T data) {
+        RSet<T> rSet = CLIENT.getSet(key);
+        return rSet.add(data);
+    }
+
+    /**
      * 娉ㄥ唽Set鐩戝惉鍣�
      * <p>
      * key 鐩戝惉鍣ㄩ渶寮�鍚� `notify-keyspace-events` 绛� redis 鐩稿叧閰嶇疆

--
Gitblit v1.9.3