¶Ô±ÈÐÂÎļþ |
| | |
| | | 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ãStringãå®ä½ç±»ç |
| | | * |
| | | * @param key ç¼åçé®å¼ |
| | | * @param value ç¼åçå¼ |
| | | */ |
| | | public static <T> void setCacheObject(final String key, final T value) { |
| | | client.getBucket(key).set(value); |
| | | } |
| | | |
| | | /** |
| | | * ç¼ååºæ¬ç对象ï¼IntegerãStringãå®ä½ç±»ç |
| | | * |
| | | * @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=设置æåï¼false=设置失败 |
| | | */ |
| | | 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=设置æåï¼false=设置失败 |
| | | */ |
| | | 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); |
| | | } |
| | | |
| | | /** |
| | | * è·å¾ç¼åçlist对象 |
| | | * |
| | | * @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); |
| | | } |
| | | |
| | | /** |
| | | * è·å¾ç¼åçset |
| | | * |
| | | * @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); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * è·å¾ç¼åçMap |
| | | * |
| | | * @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); |
| | | } |
| | | } |