1、RedisUtilpackage com.example.demo02.util;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;import org.springframework.util.CollectionUtils;import java.util.List;import java.util.Map;i
2、mport java.util.Set;import java.util.concurrent.TimeUnit;/* * Author: 80003451 * Date: 2018/12/4 15:43 * 这个RedisUtils交给Spring容器实例化,使用时直接注解注入 */Componentpublic class RedisUtil Autowired private RedisTemplate redisTemplate; / =common= /* * 指定缓存失效时间 * * param key 键 * param time 时间(秒) * return */ public
3、 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.
4、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
5、(String. key) if (key != null & key.length 0) if (key.length = 1) redisTemplate.delete(key0); else redisTemplate.delete(CollectionUtils.arrayToList(key); / =String= /* * 普通缓存获取 * * param key 键 * return 值 */ public Object get(String key) return key = null ? null : redisTemplate.opsForValue().get(key)
6、; /* * 普通缓存放入 * 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 时间(秒)
7、 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; /* * 递增 * *
8、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)
9、if (delta 0) throw new RuntimeException(递减因子必须大于0); return redisTemplate.opsForValue().increment(key, -delta); / =Map= /* * HashGet * * param key 键 不能为null * param item 项 不能为null * return 值 */ public Object hget(String key, String item) return redisTemplate.opsForHash().get(key, item); /* * 获取hashKe
10、y对应的所有键值 * * param key 键 * return 对应的多个键值 */ public Map hmget(String key) return redisTemplate.opsForHash().entries(key); /* * HashSet * * param key 键 * param map 对应多个键值 * return true 成功 false 失败 */ public boolean hmset(String key, Map map) try redisTemplate.opsForHash().putAll(key, map); return tru
11、e; catch (Exception e) e.printStackTrace(); return false; /* * HashSet 并设置时间 * * param key 键 * param map 对应多个键值 * param time 时间(秒) * return true成功 false失败 */ public boolean hmset(String key, Map map, long time) try redisTemplate.opsForHash().putAll(key, map); if (time 0) expire(key, time); return tr
12、ue; 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 (Excep
13、tion 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(
14、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表中是否有该项的值
15、* * 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(Stri
16、ng 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); / =set= /* * 根据
17、key获取Set中的所有值 * * param key 键 * return */ public Set 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, Obje
18、ct 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
19、(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 coun
20、t; 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 移除的个数
21、 */ 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= /* * 获取list缓存的内容 * param key 键 * param start 开始 * param end 结束 0 到 -1代表所有值 * return */ public List lGet(Stri
22、ng 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.pri
23、ntStackTrace(); return 0; /* * 通过索引 获取list中的值 * param key 键 * param index 索引 index=0时, 0 表头,1 第二个元素,依次类推;index 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 value
24、) 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 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.o
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1