From 6b05ddb576d21884c89214f3910f6f8405779105 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期四, 19 九月 2024 23:13:00 +0800 Subject: [PATCH] update 优化 redis操作 如果无法忽略租户id则全局处理 --- ruoyi-common/ruoyi-common-redis/src/main/java/org/dromara/common/redis/utils/RedisUtils.java | 77 +++++++++++++++++++++++++++++++++++++- 1 files changed, 74 insertions(+), 3 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..6fa3b74 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 @@ -65,6 +65,12 @@ consumer.accept(msg); } + /** + * 鍙戝竷娑堟伅鍒版寚瀹氱殑棰戦亾 + * + * @param channelKey 閫氶亾key + * @param msg 鍙戦�佹暟鎹� + */ public static <T> void publish(String channelKey, T msg) { RTopic topic = CLIENT.getTopic(channelKey); topic.publish(msg); @@ -107,7 +113,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 +137,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 +265,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 +301,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 缂撳瓨閿�� @@ -264,6 +323,18 @@ public static <T> boolean setCacheSet(final String key, final Set<T> dataSet) { RSet<T> rSet = CLIENT.getSet(key); return rSet.addAll(dataSet); + } + + /** + * 杩藉姞缂撳瓨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); } /** @@ -446,7 +517,7 @@ } /** - * 鑾峰緱缂撳瓨鐨勫熀鏈璞″垪琛� + * 鑾峰緱缂撳瓨鐨勫熀鏈璞″垪琛�(鍏ㄥ眬鍖归厤蹇界暐绉熸埛 鑷鎷兼帴绉熸埛id) * * @param pattern 瀛楃涓插墠缂� * @return 瀵硅薄鍒楄〃 @@ -457,7 +528,7 @@ } /** - * 鍒犻櫎缂撳瓨鐨勫熀鏈璞″垪琛� + * 鍒犻櫎缂撳瓨鐨勫熀鏈璞″垪琛�(鍏ㄥ眬鍖归厤蹇界暐绉熸埛 鑷鎷兼帴绉熸埛id) * * @param pattern 瀛楃涓插墠缂� */ -- Gitblit v1.9.3