项目的DEMO代码:https://github.com/heyu52/-spring-cloud
为了更加方便管理缓存,我们还可以直接使用Spring boot 的缓存组合Redis一起使用,数据都放在Redis服务器上。我们直接从零学 spring cloud第3-3课:数据库基础之MyBatis的代码来进行修改。
我们先在pom中增加缓存和redis的引用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
如果不增加spring-boot-starter-cache,编译和启动都不会报错,只是不能缓存数据。缓存的的数据必须是可以序列化的,所以我们还要修改一下model,增加序列化继承
package com.csdn.demo.model;
import java.io.Serializable;
public class User implements Serializable {
private Long id;
private String name;
private int age;
private String sex;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return ("id=" + this.id + "name=" + this.name + ",age=" + this.age + ",pass=" + this.sex);
}
public User() {
}
public User(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
}
UserController我们也要增加注解
@CacheConfig(cacheNames = "UserController")
测试的方法也要增加注解
@Cacheable
@RequestMapping("/getUserByMapParam")
public List<User> getUserByMapParam() {
Map param = new HashMap();
param.put("sex", "女");
param.put("age", 10);
List<User> users = userMapper.getUserByMapParam(param);
return users;
}
我们还要在配置文件中指定redis服务器,及缓存方式指定为Redis,并且指定过期时间为5秒:
spring.cache.type=redis
spring.cache.cache-names=UserController
spring.cache.redis.time-to-live=5000
spring.cache.redis.cache-null-values=false
# Redis 服务器地址
spring.redis.host=192.168.0.123
# Redis 服务器连接端口
spring.redis.port=6379
# Redis 服务器连接密码(默认为空)
spring.redis.password=123456
并有在配置文件中配置输出脚本
logging.level.com.csdn.demo.mapper=TRACE
启动项目,前在浏览器中输入地址:http://127.0.0.1:8080/getUserByMapParam
只要你5秒内不停刷新,只会看到一个脚本输出,超过5秒又会看到另一个相同的脚本输出。
配置超时的好处我们可以不用自己去处理旧数据。如果不配置,那么服务器的数据不断增加,这是不明智的,所以,必须要设置过期时间。