package com.biyesheji.bookmanagerservice.utils;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
@Component
public class RedisUtils {
private static final Logger LOG = LoggerFactory.getLogger(RedisUtils.class);
private static RedisTemplate<String, Object> redisTemplate;
private static StringRedisTemplate stringRedisTemplate;
private static String CACHE_PREFIX;
private static boolean CACHE_CLOSED;
@Autowired
@Qualifier("redisTemplate")
public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) {
RedisUtils.redisTemplate = redisTemplate;
}
@Autowired
@Qualifier("stringRedisTemplate")
public void setStringRedisTemplate(StringRedisTemplate stringRedisTemplate) {
RedisUtils.stringRedisTemplate = stringRedisTemplate;
}
public RedisUtils() {
}
@SuppressWarnings({ "rawtypes", "unchecked" })
private static boolean isEmpty(Object obj) {
if (obj == null) {
return true;
}
if (obj instanceof String) {
String str = obj.toString();
if ("".equals(str.trim())) {
return true;
}
return false;
}
if (obj instanceof List) {
List<Object> list = (List<Object>) obj;
if (list.isEmpty()) {
return true;
}
return false;
}
if (obj instanceof Map) {
Map map = (Map) obj;
if (map.isEmpty()) {
return true;
}
return false;
}
if (obj instanceof Set) {
Set set = (Set) obj;
if (set.isEmpty()) {
return true;
}
return false;
}
if (obj instanceof Object[]) {
Object[] objs = (Object[]) obj;
if (objs.length <= 0) {
return true;
}
return false;
}
return false;
}
/**
* 构建缓存key值
*
* @param key
* 缓存key
* @return
*/
private static String buildKey(String key) {
if (CACHE_PREFIX == null || "".equals(CACHE_PREFIX)) {
return key;
}
return CACHE_PREFIX + ":" + key;
}
/**
* 返回缓存的前缀
*
* @return CACHE_PREFIX_FLAG
*/
public static String getCachePrefix() {
return CACHE_PREFIX;
}
/**
* 设置缓存的前缀
*
* @param cachePrefix
*/
public static void setCachePrefix(String cachePrefix) {
if (cachePrefix != null && !"".equals(cachePrefix.trim())) {
CACHE_PREFIX = cachePrefix.trim();
}
}
/**
* 关闭缓存
*
* @return true:成功 false:失败
*/
public static boolean close() {
LOG.debug(" cache closed ! ");
CACHE_CLOSED = true;
return true;
}
/**
* 打开缓存
*
* @return true:存在 false:不存在
*/
public static boolean openCache() {
CACHE_CLOSED = false;
return true;
}
/**
* 检查缓存是否开启
*
* @return true:已关闭 false:已开启
*/
public static boolean isClose() {
return CACHE_CLOSED;
}
/**
* 判断key值是否存在
*
* @param key
* 缓存的key
* @return true:存在 false:不存在
*/
public static boolean hasKey(String key) {
LOG.debug(" hasKey key :{}", key);
try {
if (isClose() || isEmpty(key)) {
return false;
}
key = buildKey(key);
return redisTemplate.hasKey(key);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
}
return false;
}
/**
* 匹配符合正则的key
*
* @param patternKey
* @return key的集合
*/
public static Set<String> keys(String patternKey) {
LOG.debug(" keys key :{}", patternKey);
try {
if (isClose() || isEmpty(patternKey)) {
return Collections.emptySet();
}
return redisTemplate.keys(patternKey);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
}
return Collections.emptySet();
}
/**
* 根据key删除缓存
*
* @param key
* @return true:成功 false:失败
*/
public static boolean del(String... key) {
LOG.debug(" delete key :{}", key.toString());
try {
if (isClose() || isEmpty(key)) {
return false;
}
Set<String> keySet = new HashSet<>();
for (String str : key) {
keySet.add(buildKey(str));
}
redisTemplate.delete(keySet);
return true;
} catch (Exception e) {
LOG.error(e.getMessage(), e);
}
return false;
}
/**
* 根据key删除缓存
*
* @param key
* @return true:成功 false:失败
*/
public static boolean delPattern(String key) {
LOG.debug(" delete Pattern keys :{}", key);
try {
if (isClose() || isEmpty(key)) {
return false;
}
key = buildKey(key);
redisTemplate.delete(redisTemplate.keys(key));
return true;
} catch (Exception e) {
LOG.error(e.getMessage(), e);
}
return false;
}
/**
* 删除一组key值
*
* @param keys
* @return true:成功 false:失败
*/
public static boolean del(Set<String> keys) {
LOG.debug(" delete keys :{}", keys.toString());
try {
if (isClose() || isEmpty(keys)) {
return false;
}
Set<String> keySet = new HashSet<>();
for (String str : keys) {
keySet.add(buildKey(str));
}
redisTemplate.delete(keySet);
return true;
} catch (Exception e) {
LOG.error(e.getMessage(), e);
}
return false;
}
/**
* 设置过期时间
*
* @param key
* 缓存key
* @param seconds
* 过期秒数
* @return true:成功 false:失败
*/
public static boolean setExp(String key, long seconds) {
LOG.debug(" setExp key :{}, seconds: {}", key, seconds);
try {
if (isClose() || isEmpty(key) || seconds > 0) {
return false;
}
key = buildKey(key);
return redisTemplate.expire(key, seconds, TimeUnit.SECONDS);
} catch (Exception e) {
LOG.error(e.getMessage(), e);
}
return false;
}
/**
* 查询过期时间
*
* @param key
* 缓存key
* @return 秒数
*/
public static Long getExpire(String key) {
LOG.debug(" getExpire key :{}", key);
try {
if (isClose() || isEmpty(key)) {
return 0L;
}
key = buildKey(key);
return redisTemplate.getExpire(key, TimeUnit.SECONDS);
} catch
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
图书信息管理系统后台.zip (82个子文件)
bookmanager-service-master
mvnw.cmd 6KB
pom.xml 7KB
src
test
java
com
biyesheji
bookmanagerservice
BookmanagerServiceApplicationTests.java 245B
main
resources
mapper
BookDictMapper.xml 722B
IpLogMapper.xml 2KB
LoginInfoMapper.xml 5KB
FavoriteMapper.xml 3KB
BorrowingMapper.xml 7KB
CronConfigMapper.xml 533B
BookInfoMapper.xml 8KB
application.properties 1B
application.yml 3KB
java
com
biyesheji
bookmanagerservice
mapper
FavoriteMapper.java 1KB
IpLogMapper.java 851B
BorrowingMapper.java 2KB
BookInfoMapper.java 2KB
CronConfigMapper.java 269B
LoginInfoMapper.java 2KB
BookDictMapper.java 702B
annotation
ControllerMonitorAnnotation.java 639B
LoginLogAnnotation.java 630B
controller
IplogController.java 1KB
BookInfoController.java 4KB
LoginInfoController.java 5KB
AdminController.java 5KB
FavoriteController.java 2KB
BorrowingController.java 2KB
utils
AESUtil.java 3KB
SendPhoneCode.java 2KB
DateUtil.java 25KB
CodeUtil.java 509B
EmailUtil.java 5KB
LIstToMap.java 849B
RedisUtils.java 28KB
HttpUtils.java 10KB
MD5Util.java 1KB
ApiResult.java 625B
HttpServletRequestUtil.java 3KB
SessionUtil.java 694B
IpAddressUtil.java 2KB
BookmanagerServiceApplication.java 696B
serviceImpl
LoginInfoServiceImpl.java 7KB
BookDictServiceImpl.java 683B
CronConfigServiceImpl.java 627B
BorrowingServiceImpl.java 6KB
BookServiceImpl.java 8KB
IpLogServiceImpl.java 2KB
AdminServiceImpl.java 15KB
FavoriteServiceImpl.java 3KB
service
FavoriteService.java 973B
AdminService.java 3KB
BorrowingService.java 1KB
BookService.java 2KB
LoginInfoService.java 2KB
CronConfigService.java 201B
BookDictService.java 389B
IpLogService.java 681B
entity
IpLog.java 473B
Book.java 742B
BookDict.java 315B
LoginInfo.java 871B
BorrowingResult.java 347B
CronConfig.java 487B
BorrowingInfo.java 940B
aop
LoginLogAspect.java 3KB
ControllerMonitorAspect.java 2KB
dto
BorrowDto.java 528B
BookDto.java 1KB
IpLogDto.java 620B
PageResult.java 536B
FavoriteDto.java 771B
LoginInfoDto.java 787B
Enum
PreEnum.java 1KB
ApiResultEnum.java 1KB
config
RedisAutoConfiguration.java 2KB
CronConfig2.java 3KB
CronUtil.java 3KB
CronConfig3.java 3KB
.mvn
wrapper
maven-wrapper.properties 218B
maven-wrapper.jar 50KB
MavenWrapperDownloader.java 5KB
mvnw 10KB
共 82 条
- 1
资源评论
博士僧小星
- 粉丝: 1945
- 资源: 5903
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功