使用 spring-data-redis 整合 redis 后,扫描该类,就可以使用了.在 service 注入方式加入此类即可使用.
import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.DataType;
import org.springframework.data.redis.core.DefaultTypedTuple;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ZSetOperations.TypedTuple;
/**
* @author Carey 2018年1月23日
*
* redis 操作工具类
*/
public class RedisUtil {
@Autowired
private RedisTemplate<Object,Object> redisTemplate;
public RedisTemplate<Object,Object> getInstance(){
return redisTemplate;
}
/**
* 设置 String 类型 key-value
* @param key
* @param value
*/
public void set(String key,String value){
redisTemplate.opsForValue().set(key, value);
}
/**
* 获取 String 类型 key-value
* @param key
* @return
*/
public String get(String key){
return (String) redisTemplate.opsForValue().get(key);
}
/**
* 设置 String 类型 key-value 并添加过期时间 (毫秒单位)
* @param key
* @param value
* @param time 过期时间,毫秒单位
*/
public void setForTimeMS(String key,String value,long time){
redisTemplate.opsForValue().set(key, value, time, TimeUnit.MILLISECONDS);
}
/**
* 设置 String 类型 key-value 并添加过期时间 (分钟单位)
* @param key
* @param value
* @param time 过期时间,分钟单位
*/
public void setForTimeMIN(String key,String value,long time){
redisTemplate.opsForValue().set(key, value, time, TimeUnit.MINUTES);
}
/**
* 设置 String 类型 key-value 并添加过期时间 (分钟单位)
* @param key
* @param value
* @param time 过期时间,分钟单位
*/
public void setForTimeCustom(String key,String value,long time,TimeUnit type){
redisTemplate.opsForValue().set(key, value, time, type);
}
/**
* 如果 key 存在则覆盖,并返回旧值.
* 如果不存在,返回null 并添加
* @param key
* @param value
* @return
*/
public String getAndSet(String key,String value){
return (String) redisTemplate.opsForValue().getAndSet(key, value);
}
/**
* 批量添加 key-value (重复的键会覆盖)
* @param keyAndValue
*/
public void batchSet(Map<String,String> keyAndValue){
redisTemplate.opsForValue().multiSet(keyAndValue);
}
/**
* 批量添加 key-value 只有在键不存在时,才添加
* map 中只要有一个key存在,则全部不添加
* @param keyAndValue
*/
public void batchSetIfAbsent(Map<String,String> keyAndValue){
redisTemplate.opsForValue().multiSetIfAbsent(keyAndValue);
}
/**
* 对一个 key-value 的值进行加减操作,
* 如果该 key 不存在 将创建一个key 并赋值该 number
* 如果 key 存在,但 value 不是长整型 ,将报错
* @param key
* @param number
*/
public Long increment(String key,long number){
return redisTemplate.opsForValue().increment(key, number);
}
/**
* 对一个 key-value 的值进行加减操作,
* 如果该 key 不存在 将创建一个key 并赋值该 number
* 如果 key 存在,但 value 不是 纯数字 ,将报错
* @param key
* @param number
*/
public Double increment(String key,double number){
return redisTemplate.opsForValue().increment(key, number);
}
/**
* 给一个指定的 key 值附加过期时间
* @param key
* @param time
* @param type
* @return
*/
public boolean expire(String key,long time,TimeUnit type){
return redisTemplate.boundValueOps(key).expire(time, type);
}
/**
* 移除指定key 的过期时间
* @param key
* @return
*/
public boolean persist(String key){
return redisTemplate.boundValueOps(key).persist();
}
/**
* 获取指定key 的过期时间
* @param key
* @return
*/
public Long getExpire(String key){
return redisTemplate.boundValueOps(key).getExpire();
}
/**
* 修改 key
* @param key
* @return
*/
public void rename(String key,String newKey){
redisTemplate.boundValueOps(key).rename(newKey);
}
/**
* 删除 key-value
* @param key
* @return
*/
public boolean delete(String key){
return redisTemplate.delete(key);
}
//hash操作
/**
* 添加 Hash 键值对
* @param key
* @param hashKey
* @param value
*/
public void put(String key, String hashKey, St