package com.rc.common.redis.utils;
import java.time.Duration;
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.util.CollectionUtils;
import com.rc.common.mapper.JsonMapper;
import com.rc.common.utils.SpringContextHolder;
import com.rc.common.utils.StringUtils;
public class RedisUtil {
public static RedisTemplate<String, Object> redisTemplate;
public static RedisTemplate<String, Object> getTmp() {
if (redisTemplate == null) {
redisTemplate = SpringContextHolder.getBean("redisSOTemplate");
}
return redisTemplate;
}
// =============================common============================
/**
* redis分布式锁
* @param key
* @param time 秒
* @return
*/
public static boolean setIfAbsent(String key, long time) {
return getTmp().opsForValue().setIfAbsent(key, 1, Duration.ofSeconds(time));
}
/**
*
* 指定缓存失效时间
*
* @param key 键
*
* @param time 时间(秒)
*
* @return
*
*/
public static boolean expire(String key, long time) {
try {
if (time > 0) {
getTmp().expire(key, time, TimeUnit.SECONDS);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
*
* 删除缓存
*
* @param key 可以传一个值 或多个
*
*/
@SuppressWarnings("unchecked")
public static void del(String... key) {
if (key != null && key.length > 0) {
if (key.length == 1) {
getTmp().delete(key[0]);
} else {
getTmp().delete(CollectionUtils.arrayToList(key));
}
}
}
public static void delAll(String key) {
if (key != null) {
Set<String> kes = getTmp().keys(key);
getTmp().delete(kes);
}
}
}