From f1d079f9c0b3d384090477ca54e0548373d62b57 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Thu, 16 Jan 2025 11:56:39 +0800
Subject: [PATCH] 配置修改
---
src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java | 894 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 894 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java b/src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java
new file mode 100644
index 0000000..4c6f14f
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/utils/redis/RedisUtil.java
@@ -0,0 +1,894 @@
+package com.genersoft.iot.vmp.utils.redis;
+
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+import com.alibaba.fastjson.JSONObject;
+import com.genersoft.iot.vmp.utils.SpringBeanFactory;
+import gov.nist.javax.sip.stack.UDPMessageChannel;
+import org.springframework.data.redis.core.*;
+import org.springframework.util.CollectionUtils;
+
+/**
+ * Redis工具类
+ * @author swwheihei
+ * @date 2020年5月6日 下午8:27:29
+ */
+@SuppressWarnings(value = {"rawtypes", "unchecked"})
+public class RedisUtil {
+
+ private static RedisTemplate redisTemplate;
+
+ static {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+
+ /**
+ * 指定缓存失效时间
+ * @param key 键
+ * @param time 时间(秒)
+ * @return true / false
+ */
+ public static boolean expire(String key, long time) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ if (time > 0) {
+ redisTemplate.expire(key, time, TimeUnit.SECONDS);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 根据 key 获取过期时间
+ * @param key 键
+ */
+ public static long getExpire(String key) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.getExpire(key, TimeUnit.SECONDS);
+ }
+
+ /**
+ * 判断 key 是否存在
+ * @param key 键
+ * @return true / false
+ */
+ public static boolean hasKey(String key) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ return redisTemplate.hasKey(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 删除缓存
+ * @SuppressWarnings("unchecked") 忽略类型转换警告
+ * @param key 键(一个或者多个)
+ */
+ public static boolean del(String... key) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ if (key != null && key.length > 0) {
+ if (key.length == 1) {
+ redisTemplate.delete(key[0]);
+ } else {
+// 传入一个 Collection<String> 集合
+ redisTemplate.delete(CollectionUtils.arrayToList(key));
+ }
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+// ============================== String ==============================
+
+ /**
+ * 普通缓存获取
+ * @param key 键
+ * @return 值
+ */
+ public static Object get(String key) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return key == null ? null : redisTemplate.opsForValue().get(key);
+ }
+
+ /**
+ * 普通缓存放入
+ * @param key 键
+ * @param value 值
+ * @return true / false
+ */
+ public static boolean set(String key, Object value) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ redisTemplate.opsForValue().set(key, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 普通缓存放入并设置时间
+ * @param key 键
+ * @param value 值
+ * @param time 时间(秒),如果 time < 0 则设置无限时间
+ * @return true / false
+ */
+ public static boolean set(String key, Object value, long time) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ if (time > 0) {
+ redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
+ } else {
+ set(key, value);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 递增
+ * @param key 键
+ * @param delta 递增大小
+ * @return
+ */
+ public static long incr(String key, long delta) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ if (delta < 0) {
+ throw new RuntimeException("递增因子必须大于 0");
+ }
+ return redisTemplate.opsForValue().increment(key, delta);
+ }
+
+ /**
+ * 递减
+ * @param key 键
+ * @param delta 递减大小
+ * @return
+ */
+ public static long decr(String key, long delta) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ if (delta < 0) {
+ throw new RuntimeException("递减因子必须大于 0");
+ }
+ return redisTemplate.opsForValue().increment(key, delta);
+ }
+
+// ============================== Map ==============================
+
+ /**
+ * HashGet
+ * @param key 键(no null)
+ * @param item 项(no null)
+ * @return 值
+ */
+ public static Object hget(String key, String item) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForHash().get(key, item);
+ }
+
+ /**
+ * 获取 key 对应的 map
+ * @param key 键(no null)
+ * @return 对应的多个键值
+ */
+ public static Map<Object, Object> hmget(String key) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForHash().entries(key);
+ }
+
+ /**
+ * HashSet
+ * @param key 键
+ * @param map 值
+ * @return true / false
+ */
+ public static boolean hmset(String key, Map<Object, Object> map) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ redisTemplate.opsForHash().putAll(key, map);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * HashSet 并设置时间
+ * @param key 键
+ * @param map 值
+ * @param time 时间
+ * @return true / false
+ */
+ public static boolean hmset(String key, Map<Object, Object> map, long time) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ redisTemplate.opsForHash().putAll(key, map);
+ if (time > 0) {
+ expire(key, time);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 向一张 Hash表 中放入数据,如不存在则创建
+ * @param key 键
+ * @param item 项
+ * @param value 值
+ * @return true / false
+ */
+ public static boolean hset(String key, String item, Object value) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ redisTemplate.opsForHash().put(key, item, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 向一张 Hash表 中放入数据,并设置时间,如不存在则创建
+ * @param key 键
+ * @param item 项
+ * @param value 值
+ * @param time 时间(如果原来的 Hash表 设置了时间,这里会覆盖)
+ * @return true / false
+ */
+ public static boolean hset(String key, String item, Object value, long time) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ redisTemplate.opsForHash().put(key, item, value);
+ if (time > 0) {
+ expire(key, time);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 删除 Hash表 中的值
+ * @param key 键
+ * @param item 项(可以多个,no null)
+ */
+ public static void hdel(String key, Object... item) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ redisTemplate.opsForHash().delete(key, item);
+ }
+
+ /**
+ * 判断 Hash表 中是否有该键的值
+ * @param key 键(no null)
+ * @param item 值(no null)
+ * @return true / false
+ */
+ public static boolean hHasKey(String key, String item) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForHash().hasKey(key, item);
+ }
+
+ /**
+ * Hash递增,如果不存在则创建一个,并把新增的值返回
+ * @param key 键
+ * @param item 项
+ * @param by 递增大小 > 0
+ * @return
+ */
+ public static Double hincr(String key, String item, Double by) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForHash().increment(key, item, by);
+ }
+
+ /**
+ * Hash递减
+ * @param key 键
+ * @param item 项
+ * @param by 递减大小
+ * @return
+ */
+ public static Double hdecr(String key, String item, Double by) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForHash().increment(key, item, -by);
+ }
+
+// ============================== Set ==============================
+
+ /**
+ * 根据 key 获取 set 中的所有值
+ * @param key 键
+ * @return 值
+ */
+ public static Set<Object> sGet(String key) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ return redisTemplate.opsForSet().members(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ /**
+ * 从键为 key 的 set 中,根据 value 查询是否存在
+ * @param key 键
+ * @param value 值
+ * @return true / false
+ */
+ public static boolean sHasKey(String key, Object value) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ return redisTemplate.opsForSet().isMember(key, value);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 将数据放入 set缓存
+ * @param key 键值
+ * @param values 值(可以多个)
+ * @return 成功个数
+ */
+ public static long sSet(String key, Object... values) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ return redisTemplate.opsForSet().add(key, values);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+ /**
+ * 将数据放入 set缓存,并设置时间
+ * @param key 键
+ * @param time 时间
+ * @param values 值(可以多个)
+ * @return 成功放入个数
+ */
+ public static long sSet(String key, long time, Object... values) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ long count = redisTemplate.opsForSet().add(key, values);
+ if (time > 0) {
+ expire(key, time);
+ }
+ return count;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+ /**
+ * 获取 set缓存的长度
+ * @param key 键
+ * @return 长度
+ */
+ public static long sGetSetSize(String key) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ return redisTemplate.opsForSet().size(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+ /**
+ * 移除 set缓存中,值为 value 的
+ * @param key 键
+ * @param values 值
+ * @return 成功移除个数
+ */
+ public static long setRemove(String key, Object... values) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ return redisTemplate.opsForSet().remove(key, values);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+// ============================== ZSet ==============================
+
+ /**
+ * 添加一个元素, zset与set最大的区别就是每个元素都有一个score,因此有个排序的辅助功能; zadd
+ *
+ * @param key
+ * @param value
+ * @param score
+ */
+ public static void zAdd(Object key, Object value, double score) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ redisTemplate.opsForZSet().add(key, value, score);
+ }
+
+ /**
+ * 删除元素 zrem
+ *
+ * @param key
+ * @param value
+ */
+ public static void zRemove(Object key, Object value) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ redisTemplate.opsForZSet().remove(key, value);
+ }
+
+ /**
+ * score的增加or减少 zincrby
+ *
+ * @param key
+ * @param value
+ * @param delta -1 表示减 1 表示加1
+ */
+ public static Double zIncrScore(Object key, Object value, double delta) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForZSet().incrementScore(key, value, delta);
+ }
+
+ /**
+ * 查询value对应的score zscore
+ *
+ * @param key
+ * @param value
+ * @return
+ */
+ public static Double zScore(Object key, Object value) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForZSet().score(key, value);
+ }
+
+ /**
+ * 判断value在zset中的排名 zrank
+ *
+ * @param key
+ * @param value
+ * @return
+ */
+ public static Long zRank(Object key, Object value) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForZSet().rank(key, value);
+ }
+
+ /**
+ * 返回集合的长度
+ *
+ * @param key
+ * @return
+ */
+ public static Long zSize(Object key) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForZSet().zCard(key);
+ }
+
+ /**
+ * 查询集合中指定顺序的值, 0 -1 表示获取全部的集合内容 zrange
+ *
+ * 返回有序的集合,score小的在前面
+ *
+ * @param key
+ * @param start
+ * @param end
+ * @return
+ */
+ public static Set<Object> zRange(Object key, int start, int end) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForZSet().range(key, start, end);
+ }
+ /**
+ * 查询集合中指定顺序的值和score,0, -1 表示获取全部的集合内容
+ *
+ * @param key
+ * @param start
+ * @param end
+ * @return
+ */
+ public static Set<ZSetOperations.TypedTuple<String>> zRangeWithScore(Object key, int start, int end) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForZSet().rangeWithScores(key, start, end);
+ }
+ /**
+ * 查询集合中指定顺序的值 zrevrange
+ *
+ * 返回有序的集合中,score大的在前面
+ *
+ * @param key
+ * @param start
+ * @param end
+ * @return
+ */
+ public static Set<String> zRevRange(Object key, int start, int end) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForZSet().reverseRange(key, start, end);
+ }
+ /**
+ * 根据score的值,来获取满足条件的集合 zrangebyscore
+ *
+ * @param key
+ * @param min
+ * @param max
+ * @return
+ */
+ public static Set<String> zSortRange(Object key, int min, int max) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForZSet().rangeByScore(key, min, max);
+ }
+
+
+// ============================== List ==============================
+
+ /**
+ * 获取 list缓存的内容
+ * @param key 键
+ * @param start 开始
+ * @param end 结束(0 到 -1 代表所有值)
+ * @return
+ */
+ public static List<Object> lGet(String key, long start, long end) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ return redisTemplate.opsForList().range(key, start, end);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ /**
+ * 获取 list缓存的长度
+ * @param key 键
+ * @return 长度
+ */
+ public static long lGetListSize(String key) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ return redisTemplate.opsForList().size(key);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+ /**
+ * 根据索引 index 获取键为 key 的 list 中的元素
+ * @param key 键
+ * @param index 索引
+ * 当 index >= 0 时 {0:表头, 1:第二个元素}
+ * 当 index < 0 时 {-1:表尾, -2:倒数第二个元素}
+ * @return 值
+ */
+ public static Object lGetIndex(String key, long index) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ return redisTemplate.opsForList().index(key, index);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+ /**
+ * 将值 value 插入键为 key 的 list 中,如果 list 不存在则创建空 list
+ * @param key 键
+ * @param value 值
+ * @return true / false
+ */
+ public static boolean lSet(String key, Object value) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ redisTemplate.opsForList().rightPush(key, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 将值 value 插入键为 key 的 list 中,并设置时间
+ * @param key 键
+ * @param value 值
+ * @param time 时间
+ * @return true / false
+ */
+ public static boolean lSet(String key, Object value, long time) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ redisTemplate.opsForList().rightPush(key, value);
+ if (time > 0) {
+ expire(key, time);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 将 values 插入键为 key 的 list 中
+ * @param key 键
+ * @param values 值
+ * @return true / false
+ */
+ public static boolean lSetList(String key, List<Object> values) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ redisTemplate.opsForList().rightPushAll(key, values);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 将 values 插入键为 key 的 list 中,并设置时间
+ * @param key 键
+ * @param values 值
+ * @param time 时间
+ * @return true / false
+ */
+ public static boolean lSetList(String key, List<Object> values, long time) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ redisTemplate.opsForList().rightPushAll(key, values);
+ if (time > 0) {
+ expire(key, time);
+ }
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 根据索引 index 修改键为 key 的值
+ * @param key 键
+ * @param index 索引
+ * @param value 值
+ * @return true / false
+ */
+ public static boolean lUpdateIndex(String key, long index, Object value) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ redisTemplate.opsForList().set(key, index, value);
+ return true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ /**
+ * 在键为 key 的 list 中删除值为 value 的元素
+ * @param key 键
+ * @param count 如果 count == 0 则删除 list 中所有值为 value 的元素
+ * 如果 count > 0 则删除 list 中最左边那个值为 value 的元素
+ * 如果 count < 0 则删除 list 中最右边那个值为 value 的元素
+ * @param value
+ * @return
+ */
+ public static long lRemove(String key, long count, Object value) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ return redisTemplate.opsForList().remove(key, count, value);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return 0;
+ }
+ }
+
+ /**
+ * 在键为 key 的 list中移除第一个元素
+ * @param key 键
+ * @return
+ */
+ public static Object lLeftPop(String key) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForList().leftPop(key);
+ }
+
+ /**
+ * 在键为 key 的 list中移除、最后一个元素
+ * @param key 键
+ * @return
+ */
+ public static Object lrightPop(String key) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ return redisTemplate.opsForList().rightPop(key);
+ }
+
+ /**
+ * 模糊查询
+ * @param key 键
+ * @return true / false
+ */
+ public static List<Object> keys(String key) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ try {
+ Set<String> set = redisTemplate.keys(key);
+ return new ArrayList<>(set);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return null;
+ }
+ }
+
+
+ /**
+ * 模糊查询
+ * @param query 查询参数
+ * @return
+ */
+// public static List<Object> scan(String query) {
+// List<Object> result = new ArrayList<>();
+// try {
+// Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("field",
+// ScanOptions.scanOptions().match(query).count(1000).build());
+// while (cursor.hasNext()) {
+// Map.Entry<Object,Object> entry = cursor.next();
+// result.add(entry.getKey());
+// Object key = entry.getKey();
+// Object valueSet = entry.getValue();
+// }
+// //关闭cursor
+// cursor.close();
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// return result;
+// }
+
+ /**
+ * 模糊查询
+ * @param query 查询参数
+ * @return
+ */
+ public static List<Object> scan(String query) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ Set<String> resultKeys = (Set<String>) redisTemplate.execute((RedisCallback<Set<String>>) connection -> {
+ ScanOptions scanOptions = ScanOptions.scanOptions().match("*" + query + "*").count(1000).build();
+ Cursor<byte[]> scan = connection.scan(scanOptions);
+ Set<String> keys = new HashSet<>();
+ while (scan.hasNext()) {
+ byte[] next = scan.next();
+ keys.add(new String(next));
+ }
+ return keys;
+ });
+
+ return new ArrayList<>(resultKeys);
+ }
+
+ // ============================== 消息发送与订阅 ==============================
+ public static void convertAndSend(String channel, JSONObject msg) {
+ if (redisTemplate == null) {
+ redisTemplate = SpringBeanFactory.getBean("redisTemplate");
+ }
+ redisTemplate.convertAndSend(channel, msg);
+ }
+
+}
--
Gitblit v1.9.3