From 97cffa048e2e097bf81b2c591756b8dbb0a5b1ce Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期二, 07 九月 2021 13:19:34 +0800 Subject: [PATCH] add 过期 RedisCache 新增 RedisUtils 工具类 更灵巧便于使用 --- ruoyi-common/src/main/java/com/ruoyi/common/utils/RedisUtils.java | 258 +++++++++++++++++++++++++++++++++++++++++++++++++++ ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java | 3 2 files changed, 261 insertions(+), 0 deletions(-) diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java index 8e68d3c..23a25e0 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java @@ -16,9 +16,12 @@ * spring redis 宸ュ叿绫� * * @author shenxinquan + * @see com.ruoyi.common.utils.RedisUtils + * @deprecated 3.2.0 鍒犻櫎姝ょ被 **/ @SuppressWarnings(value = {"unchecked", "rawtypes"}) @Component +@Deprecated public class RedisCache { @Autowired diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/RedisUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/RedisUtils.java new file mode 100644 index 0000000..5fcfb9d --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/RedisUtils.java @@ -0,0 +1,258 @@ +package com.ruoyi.common.utils; + +import com.google.common.collect.Lists; +import com.ruoyi.common.utils.spring.SpringUtils; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; +import org.redisson.api.*; + +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.function.Consumer; + +/** + * redis 宸ュ叿绫� + * + * @author Lion Li + * @version 3.1.0 鏂板 + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) +@SuppressWarnings(value = {"unchecked", "rawtypes"}) +public class RedisUtils { + + private static RedissonClient client = SpringUtils.getBean(RedissonClient.class); + + /** + * 鍙戝竷閫氶亾娑堟伅 + * + * @param channelKey 閫氶亾key + * @param msg 鍙戦�佹暟鎹� + * @param consumer 鑷畾涔夊鐞� + */ + public static <T> void publish(String channelKey, T msg, Consumer<T> consumer) { + RTopic topic = client.getTopic(channelKey); + topic.publish(msg); + consumer.accept(msg); + } + + public static <T> void publish(String channelKey, T msg) { + RTopic topic = client.getTopic(channelKey); + topic.publish(msg); + } + + /** + * 璁㈤槄閫氶亾鎺ユ敹娑堟伅 + * + * @param channelKey 閫氶亾key + * @param clazz 娑堟伅绫诲瀷 + * @param consumer 鑷畾涔夊鐞� + */ + public static <T> void subscribe(String channelKey, Class<T> clazz, Consumer<T> consumer) { + RTopic topic = client.getTopic(channelKey); + topic.addListener(clazz, (channel, msg) -> consumer.accept(msg)); + } + + /** + * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛� + * + * @param key 缂撳瓨鐨勯敭鍊� + * @param value 缂撳瓨鐨勫�� + */ + public static <T> void setCacheObject(final String key, final T value) { + client.getBucket(key).set(value); + } + + /** + * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛� + * + * @param key 缂撳瓨鐨勯敭鍊� + * @param value 缂撳瓨鐨勫�� + * @param timeout 鏃堕棿 + * @param timeUnit 鏃堕棿棰楃矑搴� + */ + public static <T> void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit) { + RBucket<T> result = client.getBucket(key); + result.set(value); + result.expire(timeout, timeUnit); + } + + /** + * 璁剧疆鏈夋晥鏃堕棿 + * + * @param key Redis閿� + * @param timeout 瓒呮椂鏃堕棿 + * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触 + */ + public static boolean expire(final String key, final long timeout) { + return expire(key, timeout, TimeUnit.SECONDS); + } + + /** + * 璁剧疆鏈夋晥鏃堕棿 + * + * @param key Redis閿� + * @param timeout 瓒呮椂鏃堕棿 + * @param unit 鏃堕棿鍗曚綅 + * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触 + */ + public static boolean expire(final String key, final long timeout, final TimeUnit unit) { + RBucket rBucket = client.getBucket(key); + return rBucket.expire(timeout, unit); + } + + /** + * 鑾峰緱缂撳瓨鐨勫熀鏈璞°�� + * + * @param key 缂撳瓨閿�� + * @return 缂撳瓨閿�煎搴旂殑鏁版嵁 + */ + public static <T> T getCacheObject(final String key) { + RBucket<T> rBucket = client.getBucket(key); + return rBucket.get(); + } + + /** + * 鍒犻櫎鍗曚釜瀵硅薄 + * + * @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(); + collection.forEach(t -> { + batch.getBucket(t.toString()).deleteAsync(); + }); + batch.execute(); + } + + /** + * 缂撳瓨List鏁版嵁 + * + * @param key 缂撳瓨鐨勯敭鍊� + * @param dataList 寰呯紦瀛樼殑List鏁版嵁 + * @return 缂撳瓨鐨勫璞� + */ + public static <T> boolean setCacheList(final String key, final List<T> dataList) { + RList<T> rList = client.getList(key); + return rList.addAll(dataList); + } + + /** + * 鑾峰緱缂撳瓨鐨刲ist瀵硅薄 + * + * @param key 缂撳瓨鐨勯敭鍊� + * @return 缂撳瓨閿�煎搴旂殑鏁版嵁 + */ + public static <T> List<T> getCacheList(final String key) { + RList<T> rList = client.getList(key); + return rList.readAll(); + } + + /** + * 缂撳瓨Set + * + * @param key 缂撳瓨閿�� + * @param dataSet 缂撳瓨鐨勬暟鎹� + * @return 缂撳瓨鏁版嵁鐨勫璞� + */ + public static <T> boolean setCacheSet(final String key, final Set<T> dataSet) { + RSet<T> rSet = client.getSet(key); + return rSet.addAll(dataSet); + } + + /** + * 鑾峰緱缂撳瓨鐨剆et + * + * @param key + * @return + */ + public static <T> Set<T> getCacheSet(final String key) { + RSet<T> rSet = client.getSet(key); + return rSet.readAll(); + } + + /** + * 缂撳瓨Map + * + * @param key + * @param dataMap + */ + public static <T> void setCacheMap(final String key, final Map<String, T> dataMap) { + if (dataMap != null) { + RMap<String, T> rMap = client.getMap(key); + rMap.putAll(dataMap); + } + } + + /** + * 鑾峰緱缂撳瓨鐨凪ap + * + * @param key + * @return + */ + public static <T> Map<String, T> getCacheMap(final String key) { + RMap<String, T> rMap = client.getMap(key); + return rMap.getAll(rMap.keySet()); + } + + /** + * 寰�Hash涓瓨鍏ユ暟鎹� + * + * @param key Redis閿� + * @param hKey Hash閿� + * @param value 鍊� + */ + public static <T> void setCacheMapValue(final String key, final String hKey, final T value) { + RMap<String, T> rMap = client.getMap(key); + rMap.put(hKey, value); + } + + /** + * 鑾峰彇Hash涓殑鏁版嵁 + * + * @param key Redis閿� + * @param hKey Hash閿� + * @return Hash涓殑瀵硅薄 + */ + public static <T> T getCacheMapValue(final String key, final String hKey) { + RMap<String, T> rMap = client.getMap(key); + return rMap.get(hKey); + } + + /** + * 鑾峰彇澶氫釜Hash涓殑鏁版嵁 + * + * @param key Redis閿� + * @param hKeys Hash閿泦鍚� + * @return Hash瀵硅薄闆嗗悎 + */ + public static <K, V> Map<K, V> getMultiCacheMapValue(final String key, final Set<K> hKeys) { + RMap<K, V> rMap = client.getMap(key); + return rMap.getAll(hKeys); + } + + /** + * 鑾峰緱缂撳瓨鐨勫熀鏈璞″垪琛� + * + * @param pattern 瀛楃涓插墠缂� + * @return 瀵硅薄鍒楄〃 + */ + public static Collection<String> keys(final String pattern) { + Iterable<String> iterable = client.getKeys().getKeysByPattern(pattern); + return Lists.newArrayList(iterable); + } +} -- Gitblit v1.9.3