Bladeren bron

update 更新 RedisUtils 增加 注册监听器方法

疯狂的狮子li 3 jaren geleden
bovenliggende
commit
bcbc7c1d47
1 gewijzigde bestanden met toevoegingen van 61 en 12 verwijderingen
  1. 61 12
      ruoyi-common/src/main/java/com/ruoyi/common/utils/RedisUtils.java

+ 61 - 12
ruoyi-common/src/main/java/com/ruoyi/common/utils/RedisUtils.java

@@ -94,8 +94,8 @@ public class RedisUtils {
     /**
      * 缓存基本的对象,保留当前对象 TTL 有效期
      *
-     * @param key   缓存的键值
-     * @param value 缓存的值
+     * @param key       缓存的键值
+     * @param value     缓存的值
      * @param isSaveTtl 是否保留TTL有效期(例如: set之前ttl剩余90 set之后还是为90)
      * @since Redis 6.X 以上使用 setAndKeepTTL 兼容 5.X 方案
      */
@@ -128,6 +128,19 @@ public class RedisUtils {
         result.expire(timeout, timeUnit);
     }
 
+    /**
+     * 注册对象监听器
+     *
+     * key 监听器需开启 `notify-keyspace-events` 等 redis 相关配置
+     *
+     * @param key      缓存的键值
+     * @param listener 监听器配置
+     */
+    public static <T> void addObjectListener(final String key, final ObjectListener listener) {
+        RBucket<T> result = CLIENT.getBucket(key);
+        result.addListener(listener);
+    }
+
     /**
      * 设置有效时间
      *
@@ -177,19 +190,16 @@ public class RedisUtils {
     /**
      * 删除单个对象
      *
-     * @param key
+     * @param key 缓存的键值
      */
     public static boolean deleteObject(final String key) {
         return CLIENT.getBucket(key).delete();
     }
 
-    /* */
-
     /**
      * 删除集合对象
      *
      * @param collection 多个对象
-     * @return
      */
     public static void deleteObject(final Collection collection) {
         RBatch batch = CLIENT.createBatch();
@@ -211,6 +221,19 @@ public class RedisUtils {
         return rList.addAll(dataList);
     }
 
+    /**
+     * 注册List监听器
+     *
+     * key 监听器需开启 `notify-keyspace-events` 等 redis 相关配置
+     *
+     * @param key      缓存的键值
+     * @param listener 监听器配置
+     */
+    public static <T> void addListListener(final String key, final ObjectListener listener) {
+        RList<T> rList = CLIENT.getList(key);
+        rList.addListener(listener);
+    }
+
     /**
      * 获得缓存的list对象
      *
@@ -234,11 +257,24 @@ public class RedisUtils {
         return rSet.addAll(dataSet);
     }
 
+    /**
+     * 注册Set监听器
+     *
+     * key 监听器需开启 `notify-keyspace-events` 等 redis 相关配置
+     *
+     * @param key      缓存的键值
+     * @param listener 监听器配置
+     */
+    public static <T> void addSetListener(final String key, final ObjectListener listener) {
+        RSet<T> rSet = CLIENT.getSet(key);
+        rSet.addListener(listener);
+    }
+
     /**
      * 获得缓存的set
      *
-     * @param key
-     * @return
+     * @param key 缓存的key
+     * @return set对象
      */
     public static <T> Set<T> getCacheSet(final String key) {
         RSet<T> rSet = CLIENT.getSet(key);
@@ -248,8 +284,8 @@ public class RedisUtils {
     /**
      * 缓存Map
      *
-     * @param key
-     * @param dataMap
+     * @param key     缓存的键值
+     * @param dataMap 缓存的数据
      */
     public static <T> void setCacheMap(final String key, final Map<String, T> dataMap) {
         if (dataMap != null) {
@@ -258,11 +294,24 @@ public class RedisUtils {
         }
     }
 
+    /**
+     * 注册Map监听器
+     *
+     * key 监听器需开启 `notify-keyspace-events` 等 redis 相关配置
+     *
+     * @param key      缓存的键值
+     * @param listener 监听器配置
+     */
+    public static <T> void addMapListener(final String key, final ObjectListener listener) {
+        RMap<String, T> rMap = CLIENT.getMap(key);
+        rMap.addListener(listener);
+    }
+
     /**
      * 获得缓存的Map
      *
-     * @param key
-     * @return
+     * @param key 缓存的键值
+     * @return map对象
      */
     public static <T> Map<String, T> getCacheMap(final String key) {
         RMap<String, T> rMap = CLIENT.getMap(key);