| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893 |
- package com.genersoft.iot.vmp.utils.redis;
- import com.alibaba.fastjson2.JSONObject;
- import com.genersoft.iot.vmp.utils.SpringBeanFactory;
- import org.springframework.data.redis.core.*;
- import org.springframework.util.CollectionUtils;
- import java.util.*;
- import java.util.concurrent.TimeUnit;
- /**
- * 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<?, ?> 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);
- }
- }
|