RedisUtil.docx
《RedisUtil.docx》由会员分享,可在线阅读,更多相关《RedisUtil.docx(18页珍藏版)》请在冰豆网上搜索。
RedisUtil
packagecom.example.demo02.util;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.data.redis.core.RedisTemplate;
importorg.springframework.stereotype.Component;
importorg.springframework.util.CollectionUtils;
importjava.util.List;
importjava.util.Map;
importjava.util.Set;
importjava.util.concurrent.TimeUnit;
/**
*@Author:
80003451
*@Date:
2018/12/415:
43
*这个RedisUtils交给Spring容器实例化,使用时直接注解注入
*/
@Component
publicclassRedisUtil{
@Autowired
privateRedisTemplateredisTemplate;
//=============================common============================
/**
*指定缓存失效时间
*
*@paramkey键
*@paramtime时间(秒)
*@return
*/
publicbooleanexpire(Stringkey,longtime){
try{
if(time>0){
redisTemplate.expire(key,time,TimeUnit.SECONDS);
}
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*根据key获取过期时间
*
*@paramkey键不能为null
*@return时间(秒)返回0代表为永久有效
*/
publiclonggetExpire(Stringkey){
returnredisTemplate.getExpire(key,TimeUnit.SECONDS);
}
/**
*判断key是否存在
*
*@paramkey键
*@returntrue存在false不存在
*/
publicbooleanhasKey(Stringkey){
try{
returnredisTemplate.hasKey(key);
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*删除缓存
*@paramkey可以传一个值或多个
*/
@SuppressWarnings("unchecked")
publicvoiddel(String...key){
if(key!
=null&&key.length>0){
if(key.length==1){
redisTemplate.delete(key[0]);
}else{
redisTemplate.delete(CollectionUtils.arrayToList(key));
}
}
}
//============================String=============================
/**
*普通缓存获取
*
*@paramkey键
*@return值
*/
publicObjectget(Stringkey){
returnkey==null?
null:
redisTemplate.opsForValue().get(key);
}
/**
*普通缓存放入
*@paramkey键
*@paramvalue值
*@returntrue成功false失败
*/
publicbooleanset(Stringkey,Objectvalue){
try{
redisTemplate.opsForValue().set(key,value);
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*普通缓存放入并设置时间
*
*@paramkey键
*@paramvalue值
*@paramtime时间(秒)time要大于0如果time小于等于0将设置无限期
*@returntrue成功false失败
*/
publicbooleanset(Stringkey,Objectvalue,longtime){
try{
if(time>0){
redisTemplate.opsForValue().set(key,value,time,TimeUnit.SECONDS);
}else{
set(key,value);
}
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*递增
*
*@paramkey键
*@paramdelta要增加几(大于0)
*@return
*/
publiclongincr(Stringkey,longdelta){
if(delta<0){
thrownewRuntimeException("递增因子必须大于0");
}
returnredisTemplate.opsForValue().increment(key,delta);
}
/**
*递减
*
*@paramkey键
*@paramdelta要减少几(小于0)
*@return
*/
publiclongdecr(Stringkey,longdelta){
if(delta<0){
thrownewRuntimeException("递减因子必须大于0");
}
returnredisTemplate.opsForValue().increment(key,-delta);
}
//================================Map=================================
/**
*HashGet
*
*@paramkey键不能为null
*@paramitem项不能为null
*@return值
*/
publicObjecthget(Stringkey,Stringitem){
returnredisTemplate.opsForHash().get(key,item);
}
/**
*获取hashKey对应的所有键值
*
*@paramkey键
*@return对应的多个键值
*/
publicMap
returnredisTemplate.opsForHash().entries(key);
}
/**
*HashSet
*
*@paramkey键
*@parammap对应多个键值
*@returntrue成功false失败
*/
publicbooleanhmset(Stringkey,Mapmap){
try{
redisTemplate.opsForHash().putAll(key,map);
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*HashSet并设置时间
*
*@paramkey键
*@parammap对应多个键值
*@paramtime时间(秒)
*@returntrue成功false失败
*/
publicbooleanhmset(Stringkey,Mapmap,longtime){
try{
redisTemplate.opsForHash().putAll(key,map);
if(time>0){
expire(key,time);
}
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*向一张hash表中放入数据,如果不存在将创建
*
*@paramkey键
*@paramitem项
*@paramvalue值
*@returntrue成功false失败
*/
publicbooleanhset(Stringkey,Stringitem,Objectvalue){
try{
redisTemplate.opsForHash().put(key,item,value);
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*向一张hash表中放入数据,如果不存在将创建
*
*@paramkey键
*@paramitem项
*@paramvalue值
*@paramtime时间(秒)注意:
如果已存在的hash表有时间,这里将会替换原有的时间
*@returntrue成功false失败
*/
publicbooleanhset(Stringkey,Stringitem,Objectvalue,longtime){
try{
redisTemplate.opsForHash().put(key,item,value);
if(time>0){
expire(key,time);
}
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*删除hash表中的值
*
*@paramkey键不能为null
*@paramitem项可以使多个不能为null
*/
publicvoidhdel(Stringkey,Object...item){
redisTemplate.opsForHash().delete(key,item);
}
/**
*判断hash表中是否有该项的值
*
*@paramkey键不能为null
*@paramitem项不能为null
*@returntrue存在false不存在
*/
publicbooleanhHasKey(Stringkey,Stringitem){
returnredisTemplate.opsForHash().hasKey(key,item);
}
/**
*hash递增如果不存在,就会创建一个并把新增后的值返回
*
*@paramkey键
*@paramitem项
*@paramby要增加几(大于0)
*@return
*/
publicdoublehincr(Stringkey,Stringitem,doubleby){
returnredisTemplate.opsForHash().increment(key,item,by);
}
/**
*hash递减
*
*@paramkey键
*@paramitem项
*@paramby要减少记(小于0)
*@return
*/
publicdoublehdecr(Stringkey,Stringitem,doubleby){
returnredisTemplate.opsForHash().increment(key,item,-by);
}
//============================set=============================
/**
*根据key获取Set中的所有值
*
*@paramkey键
*@return
*/
publicSet
try{
returnredisTemplate.opsForSet().members(key);
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
}
/**
*根据value从一个set中查询,是否存在
*@paramkey键
*@paramvalue值
*@returntrue存在false不存在
*/
publicbooleansHasKey(Stringkey,Objectvalue){
try{
returnredisTemplate.opsForSet().isMember(key,value);
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*将数据放入set缓存
*@paramkey键
*@paramvalues值可以是多个
*@return成功个数
*/
publiclongsSet(Stringkey,Object...values){
try{
returnredisTemplate.opsForSet().add(key,values);
}catch(Exceptione){
e.printStackTrace();
return0;
}
}
/**
*将set数据放入缓存
*@paramkey键
*@paramtime时间(秒)
*@paramvalues值可以是多个
*@return成功个数
*/
publiclongsSetAndTime(Stringkey,longtime,Object...values){
try{
Longcount=redisTemplate.opsForSet().add(key,values);
if(time>0)
expire(key,time);
returncount;
}catch(Exceptione){
e.printStackTrace();
return0;
}
}
/**
*获取set缓存的长度
*
*@paramkey键
*@return
*/
publiclongsGetSetSize(Stringkey){
try{
returnredisTemplate.opsForSet().size(key);
}catch(Exceptione){
e.printStackTrace();
return0;
}
}
/**
*移除值为value的
*@paramkey键
*@paramvalues值可以是多个
*@return移除的个数
*/
publiclongsetRemove(Stringkey,Object...values){
try{
Longcount=redisTemplate.opsForSet().remove(key,values);
returncount;
}catch(Exceptione){
e.printStackTrace();
return0;
}
}
//===============================list=================================
/**
*获取list缓存的内容
*@paramkey键
*@paramstart开始
*@paramend结束0到-1代表所有值
*@return
*/
publicList
try{
returnredisTemplate.opsForList().range(key,start,end);
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
}
/**
*获取list缓存的长度
*@paramkey键
*@return
*/
publiclonglGetListSize(Stringkey){
try{
returnredisTemplate.opsForList().size(key);
}catch(Exceptione){
e.printStackTrace();
return0;
}
}
/**
*通过索引获取list中的值
*@paramkey键
*@paramindex索引index>=0时,0表头,1第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推
*@return
*/
publicObjectlGetIndex(Stringkey,longindex){
try{
returnredisTemplate.opsForList().index(key,index);
}catch(Exceptione){
e.printStackTrace();
returnnull;
}
}
/**
*将list放入缓存
*@paramkey键
*@paramvalue值
*@return
*/
publicbooleanlSet(Stringkey,Objectvalue){
try{
redisTemplate.opsForList().rightPush(key,value);
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*将list放入缓存
*@paramkey键
*@paramvalue值
*@paramtime时间(秒)
*@return
*/
publicbooleanlSet(Stringkey,Objectvalue,longtime){
try{
redisTemplate.opsForList().rightPush(key,value);
if(time>0)
expire(key,time);
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*将list放入缓存
*@paramkey键
*@paramvalue值
*@return
*/
publicbooleanlSet(Stringkey,List
try{
redisTemplate.opsForList().rightPushAll(key,value);
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*将list放入缓存
*@paramkey键
*@paramvalue值
*@paramtime时间(秒)
*@return
*/
publicbooleanlSet(Stringkey,List
try{
redisTemplate.opsForList().rightPushAll(key,value);
if(time>0)
expire(key,time);
returntrue;
}catch(Exceptione){
e.printStackTrace();
returnfalse;
}
}
/**
*根据索引修改list中的某条数据
*@paramkey键
*@paramindex索引
*@paramvalue值
*@return
*/
publicbooleanlUpdateIndex(Stringkey,longindex,Objectvalue){
try{
redisTemplate.o