From 2af534eea471f4adb104906c7a814bcc66d4d68d Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期一, 13 九月 2021 13:03:58 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev

---
 ruoyi-common/src/main/java/com/ruoyi/common/core/redis/RedisCache.java |  427 ++++++++++++++++++++++++++++------------------------
 1 files changed, 230 insertions(+), 197 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 a00cce6..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
@@ -1,227 +1,260 @@
 package com.ruoyi.common.core.redis;
 
+import com.google.common.collect.Lists;
+import org.redisson.api.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.TimeUnit;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.redis.core.HashOperations;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.core.ValueOperations;
-import org.springframework.stereotype.Component;
+import java.util.function.Consumer;
 
 /**
  * spring redis 宸ュ叿绫�
- * 
- * @author ruoyi
+ *
+ * @author shenxinquan
+ * @see com.ruoyi.common.utils.RedisUtils
+ * @deprecated 3.2.0 鍒犻櫎姝ょ被
  **/
-@SuppressWarnings(value = { "unchecked", "rawtypes" })
+@SuppressWarnings(value = {"unchecked", "rawtypes"})
 @Component
-public class RedisCache
-{
-    @Autowired
-    public RedisTemplate redisTemplate;
+@Deprecated
+public class RedisCache {
 
-    /**
-     * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛�
-     *
-     * @param key 缂撳瓨鐨勯敭鍊�
-     * @param value 缂撳瓨鐨勫��
-     */
-    public <T> void setCacheObject(final String key, final T value)
-    {
-        redisTemplate.opsForValue().set(key, value);
-    }
+	@Autowired
+	private RedissonClient redissonClient;
 
-    /**
-     * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛�
-     *
-     * @param key 缂撳瓨鐨勯敭鍊�
-     * @param value 缂撳瓨鐨勫��
-     * @param timeout 鏃堕棿
-     * @param timeUnit 鏃堕棿棰楃矑搴�
-     */
-    public <T> void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit)
-    {
-        redisTemplate.opsForValue().set(key, value, timeout, timeUnit);
-    }
+	/**
+	 * 鍙戝竷閫氶亾娑堟伅
+	 *
+	 * @param channelKey 閫氶亾key
+	 * @param msg 鍙戦�佹暟鎹�
+	 * @param consumer 鑷畾涔夊鐞�
+	 */
+	public <T> void publish(String channelKey, T msg, Consumer<T> consumer) {
+		RTopic topic = redissonClient.getTopic(channelKey);
+		topic.publish(msg);
+		consumer.accept(msg);
+	}
 
-    /**
-     * 璁剧疆鏈夋晥鏃堕棿
-     *
-     * @param key Redis閿�
-     * @param timeout 瓒呮椂鏃堕棿
-     * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触
-     */
-    public boolean expire(final String key, final long timeout)
-    {
-        return expire(key, timeout, TimeUnit.SECONDS);
-    }
+	public <T> void publish(String channelKey, T msg) {
+		RTopic topic = redissonClient.getTopic(channelKey);
+		topic.publish(msg);
+	}
 
-    /**
-     * 璁剧疆鏈夋晥鏃堕棿
-     *
-     * @param key Redis閿�
-     * @param timeout 瓒呮椂鏃堕棿
-     * @param unit 鏃堕棿鍗曚綅
-     * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触
-     */
-    public boolean expire(final String key, final long timeout, final TimeUnit unit)
-    {
-        return redisTemplate.expire(key, timeout, unit);
-    }
+	/**
+	 * 璁㈤槄閫氶亾鎺ユ敹娑堟伅
+	 *
+	 * @param channelKey 閫氶亾key
+	 * @param clazz 娑堟伅绫诲瀷
+	 * @param consumer 鑷畾涔夊鐞�
+	 */
+	public <T> void subscribe(String channelKey, Class<T> clazz, Consumer<T> consumer) {
+		RTopic topic = redissonClient.getTopic(channelKey);
+		topic.addListener(clazz, (channel, msg) -> consumer.accept(msg));
+	}
 
-    /**
-     * 鑾峰緱缂撳瓨鐨勫熀鏈璞°��
-     *
-     * @param key 缂撳瓨閿��
-     * @return 缂撳瓨閿�煎搴旂殑鏁版嵁
-     */
-    public <T> T getCacheObject(final String key)
-    {
-        ValueOperations<String, T> operation = redisTemplate.opsForValue();
-        return operation.get(key);
-    }
+	/**
+	 * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛�
+	 *
+	 * @param key   缂撳瓨鐨勯敭鍊�
+	 * @param value 缂撳瓨鐨勫��
+	 */
+	public <T> void setCacheObject(final String key, final T value) {
+		redissonClient.getBucket(key).set(value);
+	}
 
-    /**
-     * 鍒犻櫎鍗曚釜瀵硅薄
-     *
-     * @param key
-     */
-    public boolean deleteObject(final String key)
-    {
-        return redisTemplate.delete(key);
-    }
+	/**
+	 * 缂撳瓨鍩烘湰鐨勫璞★紝Integer銆丼tring銆佸疄浣撶被绛�
+	 *
+	 * @param key      缂撳瓨鐨勯敭鍊�
+	 * @param value    缂撳瓨鐨勫��
+	 * @param timeout  鏃堕棿
+	 * @param timeUnit 鏃堕棿棰楃矑搴�
+	 */
+	public <T> void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit) {
+		RBucket<T> result = redissonClient.getBucket(key);
+		result.set(value);
+		result.expire(timeout, timeUnit);
+	}
 
-    /**
-     * 鍒犻櫎闆嗗悎瀵硅薄
-     *
-     * @param collection 澶氫釜瀵硅薄
-     * @return
-     */
-    public long deleteObject(final Collection collection)
-    {
-        return redisTemplate.delete(collection);
-    }
+	/**
+	 * 璁剧疆鏈夋晥鏃堕棿
+	 *
+	 * @param key     Redis閿�
+	 * @param timeout 瓒呮椂鏃堕棿
+	 * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触
+	 */
+	public boolean expire(final String key, final long timeout) {
+		return expire(key, timeout, TimeUnit.SECONDS);
+	}
 
-    /**
-     * 缂撳瓨List鏁版嵁
-     *
-     * @param key 缂撳瓨鐨勯敭鍊�
-     * @param values 寰呯紦瀛樼殑List鏁版嵁
-     * @return 缂撳瓨鐨勫璞�
-     */
-    public <T> long setCacheList(final String key, final List<T> dataList)
-    {
-        Long count = redisTemplate.opsForList().rightPushAll(key, dataList);
-        return count == null ? 0 : count;
-    }
+	/**
+	 * 璁剧疆鏈夋晥鏃堕棿
+	 *
+	 * @param key     Redis閿�
+	 * @param timeout 瓒呮椂鏃堕棿
+	 * @param unit    鏃堕棿鍗曚綅
+	 * @return true=璁剧疆鎴愬姛锛沠alse=璁剧疆澶辫触
+	 */
+	public boolean expire(final String key, final long timeout, final TimeUnit unit) {
+		RBucket rBucket = redissonClient.getBucket(key);
+		return rBucket.expire(timeout, unit);
+	}
 
-    /**
-     * 鑾峰緱缂撳瓨鐨刲ist瀵硅薄
-     *
-     * @param key 缂撳瓨鐨勯敭鍊�
-     * @return 缂撳瓨閿�煎搴旂殑鏁版嵁
-     */
-    public <T> List<T> getCacheList(final String key)
-    {
-        return redisTemplate.opsForList().range(key, 0, -1);
-    }
+	/**
+	 * 鑾峰緱缂撳瓨鐨勫熀鏈璞°��
+	 *
+	 * @param key 缂撳瓨閿��
+	 * @return 缂撳瓨閿�煎搴旂殑鏁版嵁
+	 */
+	public <T> T getCacheObject(final String key) {
+		RBucket<T> rBucket = redissonClient.getBucket(key);
+		return rBucket.get();
+	}
 
-    /**
-     * 缂撳瓨Set
-     *
-     * @param key 缂撳瓨閿��
-     * @param dataSet 缂撳瓨鐨勬暟鎹�
-     * @return 缂撳瓨鏁版嵁鐨勫璞�
-     */
-    public <T> long setCacheSet(final String key, final Set<T> dataSet)
-    {
-        Long count = redisTemplate.opsForSet().add(key, dataSet);
-        return count == null ? 0 : count;
-    }
+	/**
+	 * 鍒犻櫎鍗曚釜瀵硅薄
+	 *
+	 * @param key
+	 */
+	public boolean deleteObject(final String key) {
+		return redissonClient.getBucket(key).delete();
+	}
 
-    /**
-     * 鑾峰緱缂撳瓨鐨剆et
-     *
-     * @param key
-     * @return
-     */
-    public <T> Set<T> getCacheSet(final String key)
-    {
-        return redisTemplate.opsForSet().members(key);
-    }
+	/* */
 
-    /**
-     * 缂撳瓨Map
-     *
-     * @param key
-     * @param dataMap
-     */
-    public <T> void setCacheMap(final String key, final Map<String, T> dataMap)
-    {
-        if (dataMap != null) {
-            redisTemplate.opsForHash().putAll(key, dataMap);
-        }
-    }
+	/**
+	 * 鍒犻櫎闆嗗悎瀵硅薄
+	 *
+	 * @param collection 澶氫釜瀵硅薄
+	 * @return
+	 */
+	public void deleteObject(final Collection collection) {
+		RBatch batch = redissonClient.createBatch();
+		collection.forEach(t->{
+			batch.getBucket(t.toString()).deleteAsync();
+		});
+		batch.execute();
+	}
 
-    /**
-     * 鑾峰緱缂撳瓨鐨凪ap
-     *
-     * @param key
-     * @return
-     */
-    public <T> Map<String, T> getCacheMap(final String key)
-    {
-        return redisTemplate.opsForHash().entries(key);
-    }
+	/**
+	 * 缂撳瓨List鏁版嵁
+	 *
+	 * @param key      缂撳瓨鐨勯敭鍊�
+	 * @param dataList 寰呯紦瀛樼殑List鏁版嵁
+	 * @return 缂撳瓨鐨勫璞�
+	 */
+	public <T> boolean setCacheList(final String key, final List<T> dataList) {
+		RList<T> rList = redissonClient.getList(key);
+		return rList.addAll(dataList);
+	}
 
-    /**
-     * 寰�Hash涓瓨鍏ユ暟鎹�
-     *
-     * @param key Redis閿�
-     * @param hKey Hash閿�
-     * @param value 鍊�
-     */
-    public <T> void setCacheMapValue(final String key, final String hKey, final T value)
-    {
-        redisTemplate.opsForHash().put(key, hKey, value);
-    }
+	/**
+	 * 鑾峰緱缂撳瓨鐨刲ist瀵硅薄
+	 *
+	 * @param key 缂撳瓨鐨勯敭鍊�
+	 * @return 缂撳瓨閿�煎搴旂殑鏁版嵁
+	 */
+	public <T> List<T> getCacheList(final String key) {
+		RList<T> rList = redissonClient.getList(key);
+		return rList.readAll();
+	}
 
-    /**
-     * 鑾峰彇Hash涓殑鏁版嵁
-     *
-     * @param key Redis閿�
-     * @param hKey Hash閿�
-     * @return Hash涓殑瀵硅薄
-     */
-    public <T> T getCacheMapValue(final String key, final String hKey)
-    {
-        HashOperations<String, String, T> opsForHash = redisTemplate.opsForHash();
-        return opsForHash.get(key, hKey);
-    }
+	/**
+	 * 缂撳瓨Set
+	 *
+	 * @param key     缂撳瓨閿��
+	 * @param dataSet 缂撳瓨鐨勬暟鎹�
+	 * @return 缂撳瓨鏁版嵁鐨勫璞�
+	 */
+	public <T> boolean setCacheSet(final String key, final Set<T> dataSet) {
+		RSet<T> rSet = redissonClient.getSet(key);
+		return rSet.addAll(dataSet);
+	}
 
-    /**
-     * 鑾峰彇澶氫釜Hash涓殑鏁版嵁
-     *
-     * @param key Redis閿�
-     * @param hKeys Hash閿泦鍚�
-     * @return Hash瀵硅薄闆嗗悎
-     */
-    public <T> List<T> getMultiCacheMapValue(final String key, final Collection<Object> hKeys)
-    {
-        return redisTemplate.opsForHash().multiGet(key, hKeys);
-    }
+	/**
+	 * 鑾峰緱缂撳瓨鐨剆et
+	 *
+	 * @param key
+	 * @return
+	 */
+	public <T> Set<T> getCacheSet(final String key) {
+		RSet<T> rSet = redissonClient.getSet(key);
+		return rSet.readAll();
+	}
 
-    /**
-     * 鑾峰緱缂撳瓨鐨勫熀鏈璞″垪琛�
-     * 
-     * @param pattern 瀛楃涓插墠缂�
-     * @return 瀵硅薄鍒楄〃
-     */
-    public Collection<String> keys(final String pattern)
-    {
-        return redisTemplate.keys(pattern);
-    }
+	/**
+	 * 缂撳瓨Map
+	 *
+	 * @param key
+	 * @param dataMap
+	 */
+	public <T> void setCacheMap(final String key, final Map<String, T> dataMap) {
+		if (dataMap != null) {
+			RMap<String, T> rMap = redissonClient.getMap(key);
+			rMap.putAll(dataMap);
+		}
+	}
+
+	/**
+	 * 鑾峰緱缂撳瓨鐨凪ap
+	 *
+	 * @param key
+	 * @return
+	 */
+	public <T> Map<String, T> getCacheMap(final String key) {
+		RMap<String, T> rMap = redissonClient.getMap(key);
+		return rMap.getAll(rMap.keySet());
+	}
+
+	/**
+	 * 寰�Hash涓瓨鍏ユ暟鎹�
+	 *
+	 * @param key   Redis閿�
+	 * @param hKey  Hash閿�
+	 * @param value 鍊�
+	 */
+	public <T> void setCacheMapValue(final String key, final String hKey, final T value) {
+		RMap<String, T> rMap = redissonClient.getMap(key);
+		rMap.put(hKey, value);
+	}
+
+	/**
+	 * 鑾峰彇Hash涓殑鏁版嵁
+	 *
+	 * @param key  Redis閿�
+	 * @param hKey Hash閿�
+	 * @return Hash涓殑瀵硅薄
+	 */
+	public <T> T getCacheMapValue(final String key, final String hKey) {
+		RMap<String, T> rMap = redissonClient.getMap(key);
+		return rMap.get(hKey);
+	}
+
+	/**
+	 * 鑾峰彇澶氫釜Hash涓殑鏁版嵁
+	 *
+	 * @param key   Redis閿�
+	 * @param hKeys Hash閿泦鍚�
+	 * @return Hash瀵硅薄闆嗗悎
+	 */
+	public <K,V> Map<K,V> getMultiCacheMapValue(final String key, final Set<K> hKeys) {
+		RMap<K,V>  rMap = redissonClient.getMap(key);
+		return rMap.getAll(hKeys);
+	}
+
+	/**
+	 * 鑾峰緱缂撳瓨鐨勫熀鏈璞″垪琛�
+	 *
+	 * @param pattern 瀛楃涓插墠缂�
+	 * @return 瀵硅薄鍒楄〃
+	 */
+	public Collection<String> keys(final String pattern) {
+		Iterable<String> iterable = redissonClient.getKeys().getKeysByPattern(pattern);
+		return Lists.newArrayList(iterable);
+	}
 }

--
Gitblit v1.9.3