package com.example.demo.utils.redis;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
/**
* 操作Redis的工具类
*
* @author LiuYu
* @date 2019/4/4 10:34
*/
@Component
public final class RedisUtils {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
/**
* 默认的数字比较常量
*/
private static final int ZERO = 0;
private static final int ONE = 1;
//=============================================通用方法=============================================//
/**
* 设置对应key缓存的时间
*
* @param key key值
* @param time 超时时间
* @return 返回布尔
*/
public boolean expire(String key, long time){
try {
if(time > ZERO){
redisTemplate.expire(key, time, TimeUnit.SECONDS);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 根据key值获取对应的超时时间
*
* @param key key值
* @return 返回超时时间,返回0表示永久有效
*/
public Long getExpire(String key){
return redisTemplate.getExpire(key, TimeUnit.SECONDS);
}
/**
* 判断key是否存在
*
* @param key key值
* @return 返回布尔,存在true,不存在false
*/
public boolean keyExist(String key){
try {
return redisTemplate.hasKey(key);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 删除对应key值的缓存
*
* @param key key值
*/
@SuppressWarnings("unchecked")
public void delKey(String... key){
if(null != key && key.length > ZERO){
if(key.length == ONE){
redisTemplate.delete(key[ZERO]);
}else{
redisTemplate.delete(CollectionUtils.arrayToList(key));
}
}
}
//=============================================String方法=============================================//
/**
* 获取缓存方法,String类型
*
* @param key key值
* @return 返回对应value
*/
public Object getString(String key){
return null == key?null : redisTemplate.opsForValue().get(key);
}
/**
* 放入缓存数据,String类型
*
* @param key key值
* @param value value值
* @return 返回布尔,成功true,失败false
*/
public boolean setString(String key, Object value){
try {
redisTemplate.opsForValue().set(key,value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 放入缓存数据并且设置超时时间,String类型
*
* @param key key值
* @param value value值
* @param time 超时时间
* @return 返回布尔,成功true,失败false
*/
public boolean setString(String key, Object value, long time){
try {
if(time > ZERO){
redisTemplate.opsForValue().set(key, value, time);
}else{
setString(key, value);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 递增数据,String类型
*
* @param key key值
* @param delta 递增因子 (要增加多少)
* @return 返回Long
*/
public Long inCrement(String key, long delta){
if(delta < ZERO){
throw new RuntimeException("递增因子必须大于0");
}
return redisTemplate.opsForValue().increment(key, delta);
}
/**
* 递减数据,String类型
*
* @param key key值
* @param delta 递减因子(要减少多少)
* @return 返回Long
*/
public Long deCrement(String key, long delta){
if(delta < ZERO){
throw new RuntimeException("递减因子必须大于0");
}
return redisTemplate.opsForValue().increment(key, -delta);
}
//=============================================Map方法=============================================//
/**
* 获取key对应的map中value的值,Map类型
*
* @param key 键 不能为null
* @param item 项 不能为null
* @return value值
*/
public Object getMapValue(String key, String item) {
return redisTemplate.opsForHash().get(key, item);
}
/**
* 获取hashKey对应的map值,Map类型
*
* @param key 键
* @return key对应的map值
*/
public Map<Object, Object> getMap(String key) {
return redisTemplate.opsForHash().entries(key);
}
/**
* 放入缓存数据,Map类型
*
* @param key 键
* @param map 对应多个键值
* @return true 成功 false 失败
*/
public boolean setMap(String key, Map<String, Object> map) {
try {
redisTemplate.opsForHash().putAll(key, map);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 放入缓存数据并设置超时时间,Map类型
*
* @param key 键
* @param map 对应多个键值
* @param time 时间(秒)
* @return true成功 false失败
*/
public boolean setMap(String key, Map<String, Object> map, long time) {
try {
redisTemplate.opsForHash().putAll(key, map);
if (time > ZERO) {
expire(key, time);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建,Map类型
*
* @param key 键
* @param item 项
* @param value 值
* @return true 成功 false失败
*/
public boolean setMapValue(String key, String item, Object value) {
try {
redisTemplate.opsForHash().put(key, item, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建,Map类型
*
* @param key 键
* @param item 项
* @param value 值
* @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间
* @return true 成功 false失败
*/
public boolean setMapValue(String key, String item, Object value, long time) {
try {
redisTemplate.opsForHash().put(key, item, value);
if (time > ZERO) {
expire(key, time);
}
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 删除hash表中的值,Map类型
*
* @param key 键 不能为null
* @param item 项 可以使多个 不能为null
*/
public void delMap(String key, Object... item) {
redisTemplate.opsForHash().delete(key, item);
}
/**
* 判断hash表中是否有该项的值,Map类型
*
* @param key 键 不能为null
* @param item 项 不能为null
* @return true 存�
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
SpringBoot写一个登陆注册功能,开发工具使用IDEA,技术使用SpringBoot2.1.3+Mybatis+Jpa+mysql,项目中主要使用Mybatis,jpa只做了demo,实体转换使用的是mapstruct,集成了swagger文档配置,redis缓存demo,代码只是参考,请学会思考,重要的是开发过程中的乐趣,开发步骤请参考我的博客:https://blog.csdn.net/kaifaxiaoliu/article/details/89309047
资源推荐
资源详情
资源评论
收起资源包目录
SpringBoot实现登陆注册源码 (277个子文件)
RedisUtils.class 11KB
EncryptUtil.class 6KB
UserServiceImpl.class 6KB
RedisConfig.class 5KB
UserController.class 5KB
UserInfo.class 4KB
BaseException.class 4KB
UserInfoDTO.class 3KB
RedisDaoTest.class 3KB
UserEnum.class 2KB
ErrorCodeHelper.class 2KB
EntityToDTOImpl.class 2KB
SwaggerConfig.class 2KB
ResultDTO.class 2KB
BaseExceptionEnum.class 2KB
StatusCdEnum.class 2KB
BaseEntity.class 2KB
RedisDao.class 2KB
ErrorCode.class 2KB
ResultUtils.class 2KB
BaseEntityDTO.class 1KB
ViewController.class 993B
UserService.class 880B
UserInfoMapper.class 819B
CommonConstant.class 763B
DemoApplication.class 733B
KeyUtils.class 630B
DemoApplicationTests.class 622B
EntityToDTO.class 584B
UserDao.class 452B
CommonUtils.class 304B
CodeItem.class 291B
BaseMapper.class 211B
mvnw.cmd 6KB
login.css 250KB
login.css 250KB
font-awesome.min.css 30KB
font-awesome.min.css 30KB
inputEffect.css 24KB
inputEffect.css 24KB
spop.min.css 5KB
spop.min.css 5KB
tooltips.css 2KB
tooltips.css 2KB
normalize.css 2KB
normalize.css 2KB
sign-up-login.css 1KB
sign-up-login.css 1KB
fontawesome-webfont.eot 162KB
fontawesome-webfont.eot 162KB
.gitignore 768B
index.html 17KB
index.html 17KB
register.html 1KB
register.html 1KB
login.html 333B
login.html 333B
SpringBootDemo.iml 14KB
maven-wrapper.jar 47KB
RedisUtils.java 16KB
EncryptUtil.java 9KB
UserServiceImpl.java 5KB
BaseException.java 5KB
MavenWrapperDownloader.java 5KB
UserInfo.java 4KB
UserController.java 3KB
RedisConfig.java 3KB
ErrorCodeHelper.java 3KB
UserInfoDTO.java 3KB
EntityToDTOImpl.java 2KB
BaseEntity.java 2KB
RedisDaoTest.java 2KB
ResultUtils.java 1KB
BaseEntityDTO.java 1KB
UserEnum.java 1KB
SwaggerConfig.java 1KB
RedisDao.java 1KB
ResultDTO.java 1KB
ErrorCode.java 1KB
BaseExceptionEnum.java 868B
StatusCdEnum.java 849B
ViewController.java 741B
UserService.java 721B
UserInfoMapper.java 534B
CommonConstant.java 512B
EntityToDTO.java 507B
KeyUtils.java 482B
UserDao.java 442B
DemoApplication.java 368B
DemoApplicationTests.java 340B
CodeItem.java 270B
BaseMapper.java 214B
CommonUtils.java 164B
snow.jpg 126KB
snow.jpg 126KB
jquery.min.js 91KB
jquery.min.js 91KB
snow.js 74KB
snow.js 74KB
jquery.pure.tooltips.js 6KB
共 277 条
- 1
- 2
- 3
资源评论
代码拯救不了世界
- 粉丝: 57
- 资源: 25
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功