-
注解方式使用Redis缓存
- Pom.xml文件引入依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> |
- application.properties中redis的配置
## Redis 配置 ## Redis数据库索引(默认为0) spring.redis.database=0 ## Redis服务器地址 spring.redis.host=127.0.0.1 ## Redis服务器连接端口 spring.redis.port=6379 ## Redis服务器连接密码(默认为空) spring.redis.password= ## 连接池最大连接数(使用负值表示没有限制) spring.redis.jedis.pool.max-active=8 # 连接池最大阻塞等待时间(使用负值表示没有限制) spring.redis.jedis.pool.max-wait=-1ms # 连接池中的最大空闲连接 spring.redis.jedis.pool.max-idle=8 # 连接池中的最小空闲连接 spring.redis.jedis.pool.min-idle=0 # 连接超时时间(毫秒) spring.redis.timeout=5000ms |
- 在启动类上加注解@EnableCaching
@SpringBootApplication @EnableCaching public class SellApplication { public static void main(String[] args) { SpringApplication.run(SellApplication.class, args); } } |
- 在需要加缓存的方法上添加注解@Cacheable
@RequestMapping("getAllUsers") @ResponseBody @Cacheable(cacheNames = "user", key = "’allUsers’") public List<User> getAllUsers(){ return userService.getAllUsers(); } |
Ps:@Cacheable(cacheNames=”user”, key=”allUsers”)中的key=“allUsers”的双引号中需要加一个单引号key=”’allUsers’”
否则汇报错:Property or field 'allUsers' cannot be found on object of type 'org.springframework.cache.interceptor.CacheExpressionRootObject' - maybe not public or not valid?
- pojo对象实现序列化
public class User implements Serializable { private static final long serialVersionUID = 2862072390536086881L; private Integer id; private String name; private String sex; private String phone; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name == null ? null : name.trim(); } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex == null ? null : sex.trim(); } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone == null ? null : phone.trim(); } } |
Ps:idea使用GenerateSerialVersionUID插件的方法(pojo类实现Serializable接口后可快速生成serialVersionUID)
如上图所示安装插件
如上图所示,进入Default Settings,在Inspections设置页面中,勾选Serializable class without 'serialVersionUID',并且还可以在Severity中设置提示级别,如Warning、Error等,默认为Warning,也建议选择Warning级别的提示。
如上图所示,创建一个类并实现Serializable接口,然后按alt+insert键,即可收到提示,然后选择SerialVersionUID:
2.RedisTemplate方式使用Redis缓存
- Pom.xml引入依赖
Pom.xml引入的依赖和注解方式引入的依赖是一样的,如果已经引入这一步忽略。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> |
- application.properties中redis的配置
这一步和注解方式的一样,如果已经配置可以忽略。
## Redis 配置 ## Redis数据库索引(默认为0) spring.redis.database=0 ## Redis服务器地址 spring.redis.host=127.0.0.1 ## Redis服务器连接端口 spring.redis.port=6379 ## Redis服务器连接密码(默认为空) spring.redis.password= ## 连接池最大连接数(使用负值表示没有限制) spring.redis.jedis.pool.max-active=8 # 连接池最大阻塞等待时间(使用负值表示没有限制) spring.redis.jedis.pool.max-wait=-1ms # 连接池中的最大空闲连接 spring.redis.jedis.pool.max-idle=8 # 连接池中的最小空闲连接 spring.redis.jedis.pool.min-idle=0 # 连接超时时间(毫秒) spring.redis.timeout=5000ms |
- 配置RedisConfig
Spring帮助封装了RedisTemplate和StringRedisTemplate两个类链接reids,但是RedisTemplate的泛型是<Object,Object>用着很不方便,手动配置一个RedisTemplate<String, Object>
@Configuration public class RedisConfig { @Bean @SuppressWarnings("all") public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
|