import org.springframework.data.redis.core.RedisTemplate;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* 操作redis的工具类
*/
public class RedisUtil {
/**
* redis 字符串数据类型的工具类
*/
public static class RedisStringUtil{
/**
* 设置string类型的值
* @param key
* @param value
* @return
*/
public static boolean set(RedisTemplate redisTemplate,String key,String value){
try {
redisTemplate.boundValueOps(key).set(value);
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
/**
* 获取String数据
* @param redisTemplate
* @param key
* @param defaultValue
* @return
*/
public static String get(RedisTemplate redisTemplate,String key,String defaultValue){
String retVal = null;
try {
retVal = redisTemplate.boundValueOps(key).get();
} catch (Exception e) {
e.printStackTrace();
return defaultValue;
}
return retVal != null ? retVal : defaultValue;
}
/**
* key不存在才设置
* @param redisTemplate
* @param key
* @param value
* @return
*/
public static boolean setnx(RedisTemplate redisTemplate,String key,String value){
try {
return redisTemplate.boundValueOps(key).setIfAbsent(value);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* key存在才设置
* @param redisTemplate
* @param key
* @param value
* @return
*/
public static boolean setxx(RedisTemplate redisTemplate,String key,String value){
try {
return redisTemplate.boundValueOps(key).setIfPresent(value);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 设置过期时间
* @param redisTemplate
* @param time
* @return
*/
public static boolean setex(RedisTemplate redisTemplate, String key, int time, TimeUnit timeUnit){
try {
return redisTemplate.boundValueOps(key).expire(time, timeUnit);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 对一个值增加指定的增加值
* @param redisTemplate
* @param key
* @param increment
* @return
*/
public static Double increment(RedisTemplate redisTemplate, String key, double increment){
try {
return redisTemplate.boundValueOps(key).increment(increment);
} catch (Exception e) {
e.printStackTrace();
return 0d;
}
}
/**
* 返回key下值的个数
* @param redisTemplate
* @param key
* @return
*/
public static Long size(RedisTemplate redisTemplate, String key){
try {
return redisTemplate.boundValueOps(key).size();
} catch (Exception e) {
e.printStackTrace();
return 0l;
}
}
/**
* 给一个key值追加value
* @param redisTemplate
* @param key
* @param value
* @return 返回添加后字符串的长度
*/
public static int appendStr(RedisTemplate redisTemplate, String key,String value){
try {
Integer append = redisTemplate.boundValueOps(key).append(value);
return append;
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
/**
* 获取指定位置的字符串 包含起始位置和结束位置的字符
* 超出字符长度不报错,返回所有从起始位置到字符长度的值
* @param redisTemplate
* @param key
* @param start
* @param end
* @return
*/
public static String getRangeStr(RedisTemplate redisTemplate, String key,int start,int end){
try {
String s = redisTemplate.boundValueOps(key).get(start, end);
return s;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
/**
* redis hash数据类型的工具类
*/
public static class RedisHashUtil{
/**
* 操作map对象
* @param redisTemplate
* @param key
* @param mapValue
* @return
*/
public static boolean hsetMap(RedisTemplate redisTemplate, String key, Map mapValue){
try {
redisTemplate.boundHashOps(key).putAll(mapValue);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 设置单个值,数据类型为map类型
* @param redisTemplate
* @param key
* @param hkey
* @param hvalue
* @return
*/
public static boolean hset(RedisTemplate redisTemplate, String key,String hkey,String hvalue) {
try{
redisTemplate.boundHashOps(key).put(hkey,hvalue);
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
/**
* 根据key值获取数据类型为hash的值
* @param redisTemplate
* @param key
* @param hkey
* @return
*/
public static Map hget(RedisTemplate redisTemplate,String key,String hkey){
try{
Object o = redisTemplate.boundHashOps(key).get(hkey);
Map map = new HashMap<>();
map.put(hkey,o);
return map;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
}
/**
* redis list数据类型的工具类
*/
public static class RedisListUtil{
public static Long lpush(RedisTemplate redisTemplate, String key, String value){
try {
Long index = redisTemplate.boundListOps(key).leftPush(value);
return index;
} catch (Exception e) {
e.printStackTrace();
return 0l;
}
}
public static Long lpushDubleValue(RedisTemplate redisTemplate, String key, String value1,String value2){
try {
Long index = redisTemplate.boundListOps(key).leftPush(value1,value2);
return index;
} catch (Exception e) {
e.printStackTrace();
return 0l;
}
}
public static Long lpushDubleValues(RedisTemplate redisTemplate, String key, String value1,String value2){
try {
Long index = redisTemplate.opsForList().leftPush(key, value1);
return index;
} catch (Exception e) {
e.printStackTrace();
return 0l;
}
}
}
/**
* redis set数据类型的工具类
*/
public static class RedisSetUtil{
public void sss(RedisTemplate redisTemplate,String key){
}
}
}