spring boot redis 缓存(cache)集成
2020-12-13 15:18
标签:get efault manage 需要 OLE text throws src 开发环境 本文介绍spring boot项目集成redis缓存的过程。 redis是一个开源的内存NOSQL数据库,在web开发中主要被用于数据缓存。一般在高并发的情况下,web服务器接受访问时,直接从数据库加载是慢的,需要把常用数据缓存到redis中,提高加载速度和并发能力。 创建一个spring boot项目,配置redis各相关 bean,实现几个接口,通过两种方式测试redis缓存: 如没有开发环境,可参考前面章节:[spring boot 开发环境搭建(Eclipse)]。 打开Eclipse,创建spring boot的spring starter project项目,选择菜单: 需要用到 在 项目目录结构如下图,我们添加了几个类,下面将详细介绍。 首先使用 然后配置redis相关的bean 因为主要的业务逻辑在服务层实现,一般会把缓存注解加在服务层的方法上。 下面几个服务层的方法会加缓存注解: UserSevice.java 接口 UserServiceImpl.java 实现类 Eclipse左侧,在项目根目录上点击鼠标右键弹出菜单,选择: 监控redis服务器,使用 运行结果如下: 获取用户信息 redis中的数据,可以看到数据通过 多次获取用户信息,可以看到通过 修改用户信息 redis中的缓存被删除了 测试使用RedisTemplate访问redis服务器 redis中的数据变化 完整代码 spring boot redis 缓存(cache)集成 标签:get efault manage 需要 OLE text throws src 开发环境 原文地址:https://www.cnblogs.com/haibianren/p/11577680.html
Spring Boot 集成教程
概述
项目内容
要求
项目创建
创建spring boot项目
File > New > Project ...
,弹出对话框,选择:Spring Boot > Spring Starter Project
,在配置依赖时,勾选web
、redis
,完成项目创建。项目依赖
commons-pool2
库,在pom.xml
中添加依赖
项目配置
application.properties
文件中配置redis服务器的连接## REDIS (RedisProperties)
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=192.168.0.99
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.lettuce.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.lettuce.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.lettuce.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.lettuce.pool.min-idle=0
代码实现
Redis Java配置(RedisConfig.java)
@EnableCaching
开启以注解方式使用缓存。
/**
* @description redis配置 配置序列化方式以及缓存管理器
*/
@EnableCaching // 开启缓存
@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
public class RedisConfig {
/**
* 配置自定义redisTemplate
*
* @param connectionFactory
* @return
*/
@Bean
public RedisTemplate
添加实体类 User
public class User {
private long id;
private String nickname;
private String mobile;
@JsonProperty(access = Access.WRITE_ONLY) //在输出的Json数据中隐藏密码,只能输入不输出
private String password;
private String role;
public User(long id, String nickname, String mobile, String password, String role) {
this.id = id;
this.nickname = nickname;
this.mobile = mobile;
this.password = password;
this.role = role;
}
public User() {
super();
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
}
常用的缓存注解
@Cacheable
- 表明对应方法的返回结果可以被缓存,首次调用后,下次就从缓存中读取结果,方法不会再被执行了。@CachePut
- 更新缓存,方法每次都会执行@CacheEvict
- 清除缓存,方法每次都会执行添加User的服务层
@Cacheable
@CacheEvict
public interface UserService {
public User getUserById(long userId);
public User updateUserNickname(long userId, String nickname);
}
@Service("userService")
public class UserServiceImpl implements UserService {
private static final org.slf4j.Logger log = LoggerFactory.getLogger(UserServiceImpl.class);
private User user = new User(1l, "abc1", "13512345678", "123456", "role-user");
@Cacheable(value = "user", key= "#userId")
@Override
public User getUserById(long userId) {
log.info("加载用户信息");
return user;
}
@CacheEvict(value = "user", key= "#userId")
@Override
public User updateUserNickname(long userId, String nickname) {
user.setNickname(nickname);
return user;
}
}
添加User的控制层
@RestController
@EnableAutoConfiguration
@RequestMapping("/user")
public class UserController {
// 注入service类
@Resource
private UserService userService;
// 注入RedisTemplate
@Resource
private RedisTemplate
运行
run as -> spring boot app
运行程序。 打开Postman访问接口,
同时监控redis服务器。
redis-cli
命令连上服务器,然后使用monitor
命令开始监控:SET
指令保存进redis了GET
指令从redis中读取缓存总结
文章标题:spring boot redis 缓存(cache)集成
文章链接:http://soscw.com/essay/35001.html