自定义RedisUtils个工具类(redis自定义数据结构)

  本篇文章为你整理了自定义RedisUtils个工具类(redis自定义数据结构)的详细内容,包含有redisutils工具类方法 redis自定义数据结构 redistemplate自定义序列化 redis 自定义数据库名 自定义RedisUtils个工具类,希望能帮助你了解 自定义RedisUtils个工具类。

  点击查看代码

  

//在我们真实的开发中,或者在公司,一般都可以看到一个公司自己封装的Utils工具~~

 

  @Component

  public class RedisUtil {

   @Autowired

   //@Qualifier("myRedisTemplate") //一定要保证是我们自己写的RedisTemplate

   private RedisTemplate String, Object redisTemplate;

   // =============================common============================

   * 指定缓存失效时间

   * @param key 键

   * @param time 时间(秒)

   public boolean expire(String key, long time) {

   try {

   if (time 0) {

   redisTemplate.expire(key, time, TimeUnit.SECONDS);

   return true;

   } catch (Exception e) {

   e.printStackTrace();

   return false;

   * 根据key 获取过期时间

   * @param key 键 不能为null

   * @return 时间(秒) 返回0代表为永久有效

   public long getExpire(String key) {

   return redisTemplate.getExpire(key, TimeUnit.SECONDS);

  
public Object get(String key) {

   return key == null ? null : redisTemplate.opsForValue().get(key);

   * 普通缓存放入

   * @param key 键

   * @param value 值

   * @return true成功 false失败

   public boolean set(String key, Object value) {

   try {

   redisTemplate.opsForValue().set(key, value);

   return true;

   } catch (Exception e) {

   e.printStackTrace();

   return false;

  
* @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期

   * @return true成功 false 失败

   public boolean set(String key, Object value, long time) {

   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;

  
public Object hget(String key, String item) {

   return redisTemplate.opsForHash().get(key, item);

   * 获取hashKey对应的所有键值

   * @param key 键

   * @return 对应的多个键值

   public Map Object, Object hmget(String key) {

   return redisTemplate.opsForHash().entries(key);

   * HashSet

   * @param key 键

   * @param map 对应多个键值

   public boolean hmset(String key, Map String, Object map) {

   try {

   redisTemplate.opsForHash().putAll(key, map);

   return true;

   } catch (Exception e) {

   e.printStackTrace();

   return false;

  
* @param value 值

   * @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间

   * @return true 成功 false失败

   public boolean hset(String key, String item, Object value, long time) {

   try {

   redisTemplate.opsForHash().put(key, item, value);

   if (time 0) {

   expire(key, time);

   return true;

   } catch (Exception e) {

   e.printStackTrace();

   return false;

  
public void hdel(String key, Object... item) {

   redisTemplate.opsForHash().delete(key, item);

  
public boolean hHasKey(String key, String item) {

   return redisTemplate.opsForHash().hasKey(key, item);

  
public double hincr(String key, String item, double by) {

   return redisTemplate.opsForHash().increment(key, item, by);

  
public double hdecr(String key, String item, double by) {

   return redisTemplate.opsForHash().increment(key, item, -by);

  
* @param key 键

   * @param index 索引 index =0时, 0 表头,1 第二个元素,依次类推;index 0时,-1,表尾,-2倒数第二个元素,依次类推

   public Object lGetIndex(String key, long index) {

   try {

   return redisTemplate.opsForList().index(key, index);

   } catch (Exception e) {

   e.printStackTrace();

   return null;

  
public long getExpire(String key) {

   return redisTemplate.getExpire(key, TimeUnit.SECONDS);

   * 判断key是否存在

   * @param key 键

   * @return true 存在 false不存在

   public boolean hasKey(String key) {

   try {

   return redisTemplate.hasKey(key);

   } catch (Exception e) {

   e.printStackTrace();

   return false;

   * 删除缓存

   * @param key 可以传一个值 或多个

   @SuppressWarnings("unchecked")

   public void del(String... key) {

   if (key != null key.length 0) {

   if (key.length == 1) {

   redisTemplate.delete(key[0]);

   } else {

   redisTemplate.delete(CollectionUtils.arrayToList(key));

   // ============================String=============================

   * 普通缓存获取

   * @param key 键

   * @return 值

   public Object get(String key) {

   return key == null ? null : redisTemplate.opsForValue().get(key);

   * 普通缓存放入

   * @param key 键

   * @param value 值

   * @return true成功 false失败

   public boolean set(String key, Object value) {

   try {

   redisTemplate.opsForValue().set(key, value);

   return true;

   } catch (Exception e) {

   e.printStackTrace();

   return false;

   * 普通缓存放入并设置时间

   * @param key 键

   * @param value 值

   * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期

   * @return true成功 false 失败

   public boolean set(String key, Object value, long time) {

   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 要增加几(大于0)

   * @return

   public long incr(String key, long delta) {

   if (delta 0) {

   throw new RuntimeException("递增因子必须大于0");

   return redisTemplate.opsForValue().increment(key, delta);

   * 递减

   * @param key 键

   * @param delta 要减少几(小于0)

   * @return

   public long decr(String key, long delta) {

   if (delta 0) {

   throw new RuntimeException("递减因子必须大于0");

   return redisTemplate.opsForValue().increment(key, -delta);

   * HashGet

   * @param key 键 不能为null

   * @param item 项 不能为null

   * @return 值

   public Object hget(String key, String item) {

   return redisTemplate.opsForHash().get(key, item);

   * 获取hashKey对应的所有键值

   * @param key 键

   * @return 对应的多个键值

   public Map Object, Object hmget(String key) {

   return redisTemplate.opsForHash().entries(key);

   * HashSet

   * @param key 键

   * @param map 对应多个键值

   * @return true 成功 false 失败

   public boolean hmset(String key, Map String, Object map) {

   try {

   redisTemplate.opsForHash().putAll(key, map);

   return true;

   } catch (Exception e) {

   e.printStackTrace();

   return false;

   * 指定缓存失效时间

   * @param key 键

   * @param time 时间(秒)

   * @return

   public boolean expire(String key, long time) {

   try {

   if (time 0) {

   redisTemplate.expire(key, time, TimeUnit.SECONDS);

   return true;

   } catch (Exception e) {

   e.printStackTrace();

   return false;

   * HashSet 并设置时间

   * @param key 键

   * @param map 对应多个键值

   * @param time 时间(秒)

   * @return true成功 false失败

   public boolean hmset(String key, Map String, Object map, long time) {

   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 boolean hset(String key, String item, Object value) {

   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 boolean hset(String key, String item, Object value, long time) {

   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 键 不能为null

   * @param item 项 可以使多个 不能为null

   public void hdel(String key, Object... item) {

   redisTemplate.opsForHash().delete(key, item);

   * 判断hash表中是否有该项的值

   * @param key 键 不能为null

   * @param item 项 不能为null

   * @return true 存在 false不存在

   public boolean hHasKey(String key, String item) {

   return redisTemplate.opsForHash().hasKey(key, item);

   * hash递增 如果不存在,就会创建一个 并把新增后的值返回

   * @param key 键

   * @param item 项

   * @param by 要增加几(大于0)

   * @return

   public double hincr(String key, String item, double by) {

   return redisTemplate.opsForHash().increment(key, item, by);

   * hash递减

   * @param key 键

   * @param item 项

   * @param by 要减少记(小于0)

   * @return

   public double hdecr(String key, String item, double by) {

   return redisTemplate.opsForHash().increment(key, item, -by);

   * 根据key获取Set中的所有值

   * @param key 键

   * @return

   public Set Object sGet(String key) {

   try {

   return redisTemplate.opsForSet().members(key);

   } catch (Exception e) {

   e.printStackTrace();

   return null;

   * 根据value从一个set中查询,是否存在

   * @param key 键

   * @param value 值

   * @return true 存在 false不存在

   public boolean sHasKey(String key, Object value) {

   try {

   return redisTemplate.opsForSet().isMember(key, value);

   } catch (Exception e) {

   e.printStackTrace();

   return false;

   * 将数据放入set缓存

   * @param key 键

   * @param values 值 可以是多个

   * @return 成功个数

   public long sSet(String key, Object... values) {

   try {

   return redisTemplate.opsForSet().add(key, values);

   } catch (Exception e) {

   e.printStackTrace();

   return 0;

   * 将set数据放入缓存

   * @param key 键

   * @param time 时间(秒)

   * @param values 值 可以是多个

   * @return 成功个数

   public long sSetAndTime(String key, long time, Object... values) {

   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 long sGetSetSize(String key) {

   try {

   return redisTemplate.opsForSet().size(key);

   } catch (Exception e) {

   e.printStackTrace();

   return 0;

   * 移除值为value的

   * @param key 键

   * @param values 值 可以是多个

   * @return 移除的个数

   public long setRemove(String key, Object... values) {

   try {

   Long count = redisTemplate.opsForSet().remove(key, values);

   return count;

   } catch (Exception e) {

   e.printStackTrace();

   return 0;

   * 获取list缓存的内容

   * @param key 键

   * @param start 开始

   * @param end 结束 0 到 -1代表所有值

   * @return

   public List Object lGet(String key, long start, long end) {

   try {

   return redisTemplate.opsForList().range(key, start, end);

   } catch (Exception e) {

   e.printStackTrace();

   return null;

   * 获取list缓存的长度

   * @param key 键

   * @return

   public long lGetListSize(String key) {

   try {

   return redisTemplate.opsForList().size(key);

   } catch (Exception e) {

   e.printStackTrace();

   return 0;

   * 通过索引 获取list中的值

   * @param key 键

   * @param index 索引 index =0时, 0 表头,1 第二个元素,依次类推;index 0时,-1,表尾,-2倒数第二个元素,依次类推

   * @return

   public Object lGetIndex(String key, long index) {

   try {

   return redisTemplate.opsForList().index(key, index);

   } catch (Exception e) {

   e.printStackTrace();

   return null;

   * 将list放入缓存

   * @param key 键

   * @param value 值

   * @return

   public boolean lSet(String key, Object value) {

   try {

   redisTemplate.opsForList().rightPush(key, value);

   return true;

   } catch (Exception e) {

   e.printStackTrace();

   return false;

   * 将list放入缓存

   * @param key 键

   * @param value 值

   * @param time 时间(秒)

   * @return

   public boolean lSet(String key, Object value, long time) {

   try {

   redisTemplate.opsForList().rightPush(key, value);

   if (time 0)

   expire(key, time);

   return true;

   } catch (Exception e) {

   e.printStackTrace();

   return false;

   * 将list放入缓存

   * @param key 键

   * @param value 值

   * @return

   public boolean lSet(String key, List Object value) {

   try {

   redisTemplate.opsForList().rightPushAll(key, value);

   return true;

   } catch (Exception e) {

   e.printStackTrace();

   return false;

   * 将list放入缓存

   * @param key 键

   * @param value 值

   * @param time 时间(秒)

   * @return

   public boolean lSet(String key, List Object value, long time) {

   try {

   redisTemplate.opsForList().rightPushAll(key, value);

   if (time 0)

   expire(key, time);

   return true;

   } catch (Exception e) {

   e.printStackTrace();

   return false;

   * 根据索引修改list中的某条数据

   * @param key 键

   * @param index 索引

   * @param value 值

   * @return

   public boolean lUpdateIndex(String key, long index, Object value) {

   try {

   redisTemplate.opsForList().set(key, index, value);

   return true;

   } catch (Exception e) {

   e.printStackTrace();

   return false;

   * 移除N个值为value

   * @param key 键

   * @param count 移除多少个

   * @param value 值

   * @return 移除的个数

   public long lRemove(String key, long count, Object value) {

   try {

   Long remove = redisTemplate.opsForList().remove(key, count, value);

   return remove;

   } catch (Exception e) {

   e.printStackTrace();

   return 0;

   * 加锁

   * @param key

   * @param value

   * @param expire

   * @return 是否加锁成功

   public boolean lock(String key, Object value, long expire) {

   if (null == value) {

   value = new Byte[]{1};

   if (redisTemplate.opsForValue().setIfAbsent(key, value)) {

   expire(key, expire);

   return true;

   return false;

   * 解锁

   * @param key

   public void delLock(String key) {

   redisTemplate.delete(key);

  
public Set String keys(String nameSpace) {

   return redisTemplate.keys("*" + nameSpace + "*");

   * 当前方法的主要作用是什么?

   * boundValueOps主要用于操作Redis的字符串的,它可以先在boundValueOps(“key”)中写上key名,然后接方法名,

   * 这样以后的操作就不需要写key的名称,比如redisTemplate.boundValueOps(“key”).set(“value”);

   * 当我们需要对一个key同时做多个操作时,我们做如下操作:

   *先设置为2然后自增1

   * BoundValueOperations operations = redisTemplate.boundValueOps("key");

   * operations.set("2");

   * operations.increment();

   public boolean checkFreq(String key, long count, long ttl) {

   boolean exists = redisTemplate.hasKey(key);

   BoundValueOperations String, Object valueOps = redisTemplate.boundValueOps(key);

   Long value = valueOps.increment(1);

   if (value == null) value = count;

   if (!exists) {

   redisTemplate.expire(key, ttl, TimeUnit.SECONDS);

   return value = count;

  

 

  以上就是自定义RedisUtils个工具类(redis自定义数据结构)的详细内容,想要了解更多 自定义RedisUtils个工具类的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: