redis集成相关工具类

 
 
package cn.yiyuan.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 序列化对象工具类,用于保存和读取redis数据使用
 */
public class SerializeUtil  {

    private static Logger log = LoggerFactory.getLogger(SerializeUtil.class);  

    /**
     * 序列化对象
     * @param object
     * @return
     */
    public static byte[] serialize(Object object) {  
        ObjectOutputStream oos = null;  
        ByteArrayOutputStream baos = null;  
        byte[] bytes = null;
        try {  
            // 序列化  
            baos = new ByteArrayOutputStream();  
            oos = new ObjectOutputStream(baos);  
            oos.writeObject(object);  
            bytes = baos.toByteArray();  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            try {  
                if (oos != null) {  
                    oos.close();  
                }  
                if (baos != null) {  
                    baos.close();  
                }  
            } catch (Exception e2) {  
                e2.printStackTrace();  
            }  
        }  
        return bytes;  
    }  

    /**
     * 反序列化对象
     * @param bytes
     * @return
     */
    public static Object unserialize(byte[] bytes) { 
        Object obj = null; 
        ByteArrayInputStream bais = null;  
        try {  
            // 反序列化  
            bais = new ByteArrayInputStream(bytes);  
            ObjectInputStream ois = new ObjectInputStream(bais);  
            obj = ois.readObject();  
            ois.close();   
            bais.close();
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return obj;  
    }  

    /**
     * 关闭的数据源或目标。调用 close()方法可释放对象保存的资源(如打开文件)
     * 关闭此流并释放与此流关联的所有系统资源。如果已经关闭该流,则调用此方法无效。
     * @param closeable
     */
    public static void close(Closeable closeable) {  
        if (closeable != null) {  
            try {  
                closeable.close();  
            } catch (Exception e) {  
                log.info("Unable to close %s", closeable, e);  
            }  
        }  
    }

    /**
     * 列表序列化(用于Redis整存整取)
     * @param value
     * @return
     */
    public static <T> byte[] serialize(List<T> value) {  
        if (value == null) {  
            throw new NullPointerException("Can't serialize null");  
        }  
        byte[] rv=null;  
        ByteArrayOutputStream bos = null;  
        ObjectOutputStream os = null;  
        try {  
            bos = new ByteArrayOutputStream();  
            os = new ObjectOutputStream(bos);  
            for(T obj : value){  
                os.writeObject(obj);  
            }  
            os.writeObject(null);  
            os.close();  
            bos.close();  
            rv = bos.toByteArray();  
        } catch (IOException e) {  
            throw new IllegalArgumentException("Non-serializable object", e);  
        } finally {  
            close(os);
            close(bos);
        }  
        return rv;  
    }

    /**
     * 反序列化列表(用于Redis整存整取)
     * @param in
     * @return
     */
    public static <T> List<T> unserializeForList(byte[] in) {  
        List<T> list = new ArrayList<T>();  
        ByteArrayInputStream bis = null;  
        ObjectInputStream is = null;  
        try {  
            if(in != null) {  
                bis=new ByteArrayInputStream(in);  
                is=new ObjectInputStream(bis);  
                while (true) {  
                    T obj = (T) is.readObject();  
                    if(obj == null){  
                        break;  
                    }else{  
                        list.add(obj);  
                    }  
                }  
                is.close();  
                bis.close();  
            }  
        } catch (IOException e) {  
            log.warn("Caught IOException decoding %d bytes of data",  
                    in == null ? 0 : in.length, e);  
        } catch (ClassNotFoundException e) {  
            log.warn("Caught CNFE decoding %d bytes of data",  
                    in == null ? 0 : in.length, e);  
        } finally {  
            close(is);  
            close(bis);  
        }  
        return list;  
    }  

}
package com.health.hospital;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
/*
*
* 管理RedisTemplate的Bean组件
* */
@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){
        RedisTemplate<String,Object> redisTemplate=new RedisTemplate<>() ;
        redisTemplate.setConnectionFactory(factory);
        return redisTemplate;
    }
}

  

package com.health.hospital.util;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;


import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import javax.annotation.Resource;
/**
 * 基于spring和redis的redisTemplate工具类
 * 针对所有的hash 都是以h开头的方法
 * 针对所有的Set 都是以s开头的方法                    不含通用方法
 * 针对所有的List 都是以l开头的方法
 */
@Component
public class RedisUtil {

    @Resource
    private RedisTemplate<String, Object> redisTemplate;

    public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {
        this.redisTemplate = redisTemplate;
    }
    //=============================common============================
    /**
     * 指定缓存失效时间
     * @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;
        }
    }

    /*
     * 根据key 获取过期时间
     * @param key 键 不能为null
     * @return 时间(秒) 返回0代表为永久有效
     */
    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, time);
            }
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }


    public long incr(String key, long delta){
        if(delta<0){
            throw new RuntimeException("递增因子必须大于0");
        }
        return redisTemplate.opsForValue().increment(key, delta);
    }



    public long decr(String key, long delta){
        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);
    }

    /**
     * 获取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;
        }
    }

    /**
     * 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);
    }

    //============================set=============================
    /**
     * 根据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=================================

    /**
     * 获取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倒数第二个元素,依次类推
     *
     */
    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 值
     *
     *
     */
    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 时间(秒)
     */
    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 值
     */
    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;
        }
    }


}

  

 
 

  

1 package cn.yiyuan.util;  2  3//redis缓存读写  4 import java.util.List;  5 import java.util.Map;  6 import java.util.Set;  7 import java.util.concurrent.TimeUnit;  8  9  10 import org.springframework.data.redis.core.RedisTemplate;  11 import org.springframework.util.CollectionUtils;  12  13  14 /**  15  * 基于spring和redis的redisTemplate工具类  16  * 针对所有的hash 都是以h开头的方法  17  * 针对所有的Set 都是以s开头的方法 不含通用方法  18  * 针对所有的List 都是以l开头的方法  19 */  20 public class RedisUtil {  21  22  23 private RedisTemplate<String, Object> redisTemplate;  24  25 public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {  26 this.redisTemplate = redisTemplate;  27  }  28 //=============================common============================  29 /**  30  * 指定缓存失效时间  31  * @param key 键  32  * @param time 时间(秒)  33  * @return  34 */  35 public boolean expire(String key,long time){  36 try {  37 if(time>0){  38  redisTemplate.expire(key, time, TimeUnit.SECONDS);  39  }  40 return true;  41 } catch (Exception e) {  42  e.printStackTrace();  43 return false;  44  }  45  }  46  47 /*  48  * 根据key 获取过期时间  49  * @param key 键 不能为null  50  * @return 时间(秒) 返回0代表为永久有效  51 */  52 public long getExpire(String key){  53 return redisTemplate.getExpire(key,TimeUnit.SECONDS);  54  }  55  56 /**  57  * 判断key是否存在  58  * @param key 键  59  * @return true 存在 false不存在  60 */  61 public boolean hasKey(String key){  62 try {  63 return redisTemplate.hasKey(key);  64 } catch (Exception e) {  65  e.printStackTrace();  66 return false;  67  }  68  }  69  70 /**  71  * 删除缓存  72  * @param key 可以传一个值 或多个  73 */  74 @SuppressWarnings("unchecked")  75 public void del(String ... key){  76 if(key!=null&&key.length>0){  77 if(key.length==1){  78 redisTemplate.delete(key[0]);  79 }else{  80  redisTemplate.delete(CollectionUtils.arrayToList(key));  81  }  82  }  83  }  84  85 //============================String=============================  86 /**  87  * 普通缓存获取  88  * @param key 键  89  * @return 90 */  91 public Object get(String key){  92 return key==null?null:redisTemplate.opsForValue().get(key);  93  }  94  95 /**  96  * 普通缓存放入  97  * @param key 键  98  * @param value 值  99  * @return true成功 false失败 100 */ 101 public boolean set(String key,Object value) { 102 try { 103  redisTemplate.opsForValue().set(key, value); 104 return true; 105 } catch (Exception e) { 106  e.printStackTrace(); 107 return false; 108  } 109 110  } 111 112 /** 113  * 普通缓存放入并设置时间 114  * @param key 键 115  * @param value 值 116  * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 117  * @return true成功 false 失败 118 */ 119 public boolean set(String key,Object value,long time){ 120 try { 121 if(time>0){ 122  redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); 123 }else{ 124  set(key, value, time); 125  } 126 return true; 127 } catch (Exception e) { 128  e.printStackTrace(); 129 return false; 130  } 131  } 132 133 134 public long incr(String key, long delta){ 135 if(delta<0){ 136 throw new RuntimeException("递增因子必须大于0"); 137  } 138 return redisTemplate.opsForValue().increment(key, delta); 139  } 140 141 142 143 public long decr(String key, long delta){ 144 if(delta<0){ 145 throw new RuntimeException("递减因子必须大于0"); 146  } 147 return redisTemplate.opsForValue().increment(key, -delta); 148  } 149 150 //================================Map================================= 151 /** 152  * HashGet 153  * @param key 键 不能为null 154  * @param item 项 不能为null 155  * @return156 */ 157 public Object hget(String key,String item){ 158 return redisTemplate.opsForHash().get(key, item); 159  } 160 161 /** 162  * 获取hashKey对应的所有键值 163  * @param key 键 164  * @return 对应的多个键值 165 *//* 166  public Map<Object,Object> hmget(String key){ 167  return redisTemplate.opsForHash().entries(key); 168  } 169 170  /** 171  * HashSet 172  * @param key 键 173  * @param map 对应多个键值 174  * @return true 成功 false 失败 175 */ 176 public boolean hmset(String key, Map<String,Object> map){ 177 try { 178  redisTemplate.opsForHash().putAll(key, map); 179 return true; 180 } catch (Exception e) { 181  e.printStackTrace(); 182 return false; 183  } 184  } 185 186 /** 187  * HashSet 并设置时间 188  * @param key 键 189  * @param map 对应多个键值 190  * @param time 时间(秒) 191  * @return true成功 false失败 192 */ 193 public boolean hmset(String key, Map<String,Object> map, long time){ 194 try { 195  redisTemplate.opsForHash().putAll(key, map); 196 if(time>0){ 197  expire(key, time); 198  } 199 return true; 200 } catch (Exception e) { 201  e.printStackTrace(); 202 return false; 203  } 204  } 205 206 /** 207  * 向一张hash表中放入数据,如果不存在将创建 208  * @param key 键 209  * @param item 项 210  * @param value 值 211  * @return true 成功 false失败 212 */ 213 public boolean hset(String key,String item,Object value) { 214 try { 215  redisTemplate.opsForHash().put(key, item, value); 216 return true; 217 } catch (Exception e) { 218  e.printStackTrace(); 219 return false; 220  } 221  } 222 223 /** 224  * 向一张hash表中放入数据,如果不存在将创建 225  * @param key 键 226  * @param item 项 227  * @param value 值 228  * @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间 229  * @return true 成功 false失败 230 */ 231 public boolean hset(String key,String item,Object value,long time) { 232 try { 233  redisTemplate.opsForHash().put(key, item, value); 234 if(time>0){ 235  expire(key, time); 236  } 237 return true; 238 } catch (Exception e) { 239  e.printStackTrace(); 240 return false; 241  } 242  } 243 244 /** 245  * 删除hash表中的值 246  * @param key 键 不能为null 247  * @param item 项 可以使多个 不能为null 248 */ 249 public void hdel(String key, Object... item){ 250  redisTemplate.opsForHash().delete(key,item); 251  } 252 253 /** 254  * 判断hash表中是否有该项的值 255  * @param key 键 不能为null 256  * @param item 项 不能为null 257  * @return true 存在 false不存在 258 */ 259 public boolean hHasKey(String key, String item){ 260 return redisTemplate.opsForHash().hasKey(key, item); 261  } 262 263 /** 264  * hash递增 如果不存在,就会创建一个 并把新增后的值返回 265  * @param key 键 266  * @param item 项 267  * @param by 要增加几(大于0) 268  * @return 269 */ 270 public double hincr(String key, String item,double by){ 271 return redisTemplate.opsForHash().increment(key, item, by); 272  } 273 274 /** 275  * hash递减 276  * @param key 键 277  * @param item 项 278  * @param by 要减少记(小于0) 279  * @return 280 */ 281 public double hdecr(String key, String item,double by){ 282 return redisTemplate.opsForHash().increment(key, item,-by); 283  } 284 285 //============================set============================= 286 /** 287  * 根据key获取Set中的所有值 288  * @param key 键 289  * @return 290 */ 291 public Set<Object> sGet(String key){ 292 try { 293 return redisTemplate.opsForSet().members(key); 294 } catch (Exception e) { 295  e.printStackTrace(); 296 return null; 297  } 298  } 299 300 /** 301  * 根据value从一个set中查询,是否存在 302  * @param key 键 303  * @param value 值 304  * @return true 存在 false不存在 305 */ 306 public boolean sHasKey(String key,Object value){ 307 try { 308 return redisTemplate.opsForSet().isMember(key, value); 309 } catch (Exception e) { 310  e.printStackTrace(); 311 return false; 312  } 313  } 314 315 /** 316  * 将数据放入set缓存 317  * @param key 键 318  * @param values 值 可以是多个 319  * @return 成功个数 320 */ 321 public long sSet(String key, Object...values) { 322 try { 323 return redisTemplate.opsForSet().add(key, values); 324 } catch (Exception e) { 325  e.printStackTrace(); 326 return 0; 327  } 328  } 329 /** 330  * 将set数据放入缓存 331  * @param key 键 332  * @param time 时间(秒) 333  * @param values 值 可以是多个 334  * @return 成功个数 335 */ 336 public long sSetAndTime(String key,long time,Object...values) { 337 try { 338 Long count = redisTemplate.opsForSet().add(key, values); 339 if(time>0) expire(key, time); 340 return count; 341 } catch (Exception e) { 342  e.printStackTrace(); 343 return 0; 344  } 345  } 346 347 /** 348  * 获取set缓存的长度 349  * @param key 键 350  * @return 351 */ 352 public long sGetSetSize(String key){ 353 try { 354 return redisTemplate.opsForSet().size(key); 355 } catch (Exception e) { 356  e.printStackTrace(); 357 return 0; 358  } 359  } 360 361 /** 362  * 移除值为value的 363  * @param key 键 364  * @param values 值 可以是多个 365  * @return 移除的个数 366 */ 367 public long setRemove(String key, Object ...values) { 368 try { 369 Long count = redisTemplate.opsForSet().remove(key, values); 370 return count; 371 } catch (Exception e) { 372  e.printStackTrace(); 373 return 0; 374  } 375  } 376 //===============================list================================= 377 378 /** 379  * 获取list缓存的内容 380  * @param key 键 381  * @param start 开始 382  * @param end 结束 0 到 -1代表所有值 383  * @return 384 */ 385 public List<Object> lGet(String key,long start, long end){ 386 try { 387 return redisTemplate.opsForList().range(key, start, end); 388 } catch (Exception e) { 389  e.printStackTrace(); 390 return null; 391  } 392  } 393 394 /** 395  * 获取list缓存的长度 396  * @param key 键 397  * @return 398 */ 399 public long lGetListSize(String key){ 400 try { 401 return redisTemplate.opsForList().size(key); 402 } catch (Exception e) { 403  e.printStackTrace(); 404 return 0; 405  } 406  } 407 408 /** 409  * 通过索引 获取list中的值 410  * @param key 键 411  * @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推 412  * 413 */ 414 public Object lGetIndex(String key,long index){ 415 try { 416 return redisTemplate.opsForList().index(key, index); 417 } catch (Exception e) { 418  e.printStackTrace(); 419 return null; 420  } 421  } 422 423 /** 424  * 将list放入缓存 425  * @param key 键 426  * @param value 值 427  * 428  * 429 */ 430 public boolean lSet(String key, Object value) { 431 try { 432  redisTemplate.opsForList().rightPush(key, value); 433 return true; 434 } catch (Exception e) { 435  e.printStackTrace(); 436 return false; 437  } 438  } 439 440 /** 441  * 将list放入缓存 442  * @param key 键 443  * @param value 值 444  * @param time 时间(秒) 445 */ 446 public boolean lSet(String key, Object value, long time) { 447 try { 448  redisTemplate.opsForList().rightPush(key, value); 449 if (time > 0) expire(key, time); 450 return true; 451 } catch (Exception e) { 452  e.printStackTrace(); 453 return false; 454  } 455  } 456 457 /** 458  * 将list放入缓存 459  * @param key 键 460  * @param value 值 461 */ 462 public boolean lSet(String key, List<Object> value) { 463 try { 464  redisTemplate.opsForList().rightPushAll(key, value); 465 return true; 466 } catch (Exception e) { 467  e.printStackTrace(); 468 return false; 469  } 470  } 471 472 /** 473  * 将list放入缓存 474  * @param key 键 475  * @param value 值 476  * @param time 时间(秒) 477  * @return 478 *//* 479  public boolean lSet(String key, List<Object> value, long time) { 480  try { 481  redisTemplate.opsForList().rightPushAll(key, value); 482  if (time > 0) expire(key, time); 483  return true; 484  } catch (Exception e) { 485  e.printStackTrace(); 486  return false; 487  } 488  } 489 490 *//** 491  * 根据索引修改list中的某条数据 492  * @param key 键 493  * @param index 索引 494  * @param value 值 495  * @return 496 *//* 497  public boolean lUpdateIndex(String key, long index,Object value) { 498  try { 499  redisTemplate.opsForList().set(key, index, value); 500  return true; 501  } catch (Exception e) { 502  e.printStackTrace(); 503  return false; 504  } 505  } 506 507 *//** 508  * 移除N个值为value 509  * @param key 键 510  * @param count 移除多少个 511  * @param value 值 512  * @return 移除的个数 513 */ 514 public long lRemove(String key,long count,Object value) { 515 try { 516 Long remove = redisTemplate.opsForList().remove(key, count, value); 517 return remove; 518 } catch (Exception e) { 519  e.printStackTrace(); 520 return 0; 521  } 522  } 523 524 }

猜你喜欢

转载自www.cnblogs.com/zhanggguoqi/p/10680882.html
今日推荐