content: //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 RedisUtil2 {
  //
  //    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 List<Object> scan2(String query) {
  //        if (redisTemplate == null) {
  //            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  //        }
  //        Set<String> keys = redisTemplate.keys(query);
  //        return new ArrayList<>(keys);
  //    }
  //    //    ============================== 消息发送与订阅 ==============================
  //    public static void convertAndSend(String channel, JSONObject msg) {
  //        if (redisTemplate == null) {
  //            redisTemplate = SpringBeanFactory.getBean("redisTemplate");
  //        }
  //        redisTemplate.convertAndSend(channel, msg);
  //    }
  //
  //}
  