在项目中使用redis作为缓存,提高用户访问速度。
实现思路
- 保存缓存:当用户进行页面访问时,前端会向后端发送请求。后端则会向数据库中获取数据,此时我们在请求向数据库获取数据之前先从redis缓存中尝试获取数据,如果redis缓存中存在我们需要的数据,即可直接返回。如果不存在,则在请求向数据库获取完数据后,将获取到的数据再保存一份到redis缓存中。
- 清理缓存:当后台管理员对数据进行修改,新增,删除的操作后,为保证用户获取到的数据的准确性。就需要对redis缓存中的数据进行清除。
代码实现
1.引入依赖
点击查看代码
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.3.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.3.9.RELEASE</version>
</dependency>
点击查看代码
spring:
application:
name: Reggie
#Redis相关配置
redis:
host: localhost
port: 6379
database: 0 #操作0号数据库
jedis:
pool:
max-active: 8 #最大连接数
max-wait: 1ms #连接池最大阻塞等待时间
max-idle: 4 #连接池中的最大空闲连接
min-idle: 0 #连接池中的最小空闲连接
点击查看代码
@Configuration
public class RedisConfig extends CachingConfigurerSupport {
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
//默认的Key序列化器为:JdkSerializationRedisSerializer
redisTemplate.setKeySerializer(new StringRedisSerializer());
//注意: 一般值不会设置序列化器为StringRedisSerializer,因为后期有可能值位置存储的数据为非String类型!
//redisTemplate.setValueSerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setConnectionFactory(connectionFactory);
return redisTemplate;
}
}
清理缓存:清理缓存有两种策略,一种是根据分类清除,另一种是全部清除