RedisUtil 工具类代码
import java.io.Serializable;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.linkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.Map.Entry;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springblade.core.tool.utils.CollectionUtil;
import org.springblade.core.tool.utils.StringUtil;
import org.springframework.data.redis.connection.DataType;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisStringCommands.SetOption;
import org.springframework.data.redis.core.RedisConnectionUtils;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.types.Expiration;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import org.springframework.util.CollectionUtils;
import org.springframework.util.StringUtils;
public class RedisUtil {
private static final Logger log = LoggerFactory.getLogger(RedisUtil.class);
private static final String SUCCESS = "OK";
private static final long UN_EXPIRE = -1L;
private final RedisTemplate redisTemplate;
public RedisUtil(RedisTemplate redisTemplate) {
Assert.notNull(redisTemplate, "redisTemplate is null");
this.redisTemplate = redisTemplate;
}
public void set(String key, Object value) {
this.redisTemplate.opsForValue().set(key, value);
}
public void setEx(String key, Object value, Duration timeout) {
this.redisTemplate.opsForValue().set(key, value, timeout);
}
public void setEx(String key, Object value, Long seconds) {
this.redisTemplate.opsForValue().set(key, value, seconds, TimeUnit.SECONDS);
}
@Nullable
public T get(String key) {
return this.redisTemplate.opsForValue().get(key);
}
public T get(String key, Class clazz) {
try {
if (StringUtils.isEmpty(key)) {
return null;
} else {
Object obj = this.redisTemplate.opsForValue().get(key);
return obj;
}
} catch (Exception var5) {
log.error("redisUtil get", var5);
return null;
}
}
@Nullable
public T get(String key, Supplier loader) {
T value = this.get(key);
if (Objects.isNull(value)) {
return value;
} else {
value = loader.get();
if (Objects.nonNull(value)) {
this.set(key, value);
}
return value;
}
}
public Boolean del(String key) {
return this.redisTemplate.delete(key);
}
public Long del(String... keys) {
return this.del((Collection)Arrays.asList(keys));
}
public Long del(Collection keys) {
return this.redisTemplate.delete(keys);
}
public Set keys(String pattern) {
return this.redisTemplate.keys(pattern);
}
public void multiSet(Map kvMap) {
this.redisTemplate.opsForValue().multiSet(kvMap);
}
public List
示例一 用户信息缓存
import org.springblade.core.redis.cache.RedisUtil;
import org.springblade.core.tool.utils.MapUtil;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.gis.modules.user.entity.User;
import org.springblade.gis.modules.user.service.UserService;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import static org.springblade.gis.common.constant.CacheConstant.*;
public class SystemCache {
private static final RedisUtil REDIS_UTIL;
private static final UserService USER_SERVICE;
static {
REDIS_UTIL = SpringUtil.getBean(RedisUtil.class);
USER_SERVICE = SpringUtil.getBean(UserService.class);
}
public static User getUser (Long userId) {
return REDIS_UTIL.hGet(USER_CACHE, userId, User.class, () -> USER_SERVICE.getById(userId));
}
public static Collection getAllUser () {
return REDIS_UTIL.hgetAll(USER_CACHE, Long.class, User.class).values();
}
public static void delUser (List userIds) {
REDIS_UTIL.hDel(USER_CACHE, userIds);
REDIS_UTIL.hDel(USER_NAME_CACHE, userIds);
}
public static void delAllUser(){
REDIS_UTIL.del(USER_CACHE);
}
public static void deloneUser (Long userId) {
REDIS_UTIL.hDel(USER_CACHE, userId);
REDIS_UTIL.hDel(USER_NAME_CACHE, userId);
}
public static void saveUser (User user) {
REDIS_UTIL.hSet(USER_CACHE, user.getId(), user);
REDIS_UTIL.hSet(USER_NAME_CACHE, user.getId(), user.getRealName());
}
public static void initUser () {
List list = USER_SERVICE.list();
REDIS_UTIL.hMset(USER_CACHE, (Map) MapUtil.map(User::getId, list));
REDIS_UTIL.hMset(USER_NAME_CACHE, MapUtil.map(User::getId, User::getRealName, list));
}
}
redis 图形化展示
示例二 业务数据缓存
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import org.springblade.core.redis.cache.RedisUtil;
import org.springblade.core.tool.utils.SpringUtil;
import org.springblade.gis.modules.dynamictable.entity.DynamicEntity;
import java.util.Collection;
import java.util.List;
public class DynamicDataCache {
private static final RedisUtil REDIS_UTIL;
static {
REDIS_UTIL = SpringUtil.getBean(RedisUtil.class);
}
public static Collection getData (String batchNo) {
return REDIS_UTIL.hgetAll(batchNo,Long.class,DynamicEntity.class).values();
}
public static void delData (String batchNo) {
REDIS_UTIL.del(batchNo);
}
public static void saveData (String batchNo,List entities) {
entities.forEach(e->{
REDIS_UTIL.hSet(batchNo, IdWorker.get32UUID(),e);
});
REDIS_UTIL.expire(batchNo,180L);
}
}