Spring Boot 2.x(十四):整合Redis,看这一篇就够了 (2)

抽象类中我们进行了RedisTemplate的初始化以及序列化:

public abstract class AbstractBaseRedisDao<K, V> { @Resource(name = "redisTemplate") protected RedisTemplate<K, V> redisTemplate; /** * 设置redisTemplate * * @param redisTemplate */ public void setRedisTemplate(RedisTemplate<K, V> redisTemplate) { this.redisTemplate = redisTemplate; } /** * 获取 RedisSerializer */ protected RedisSerializer<String> getRedisSerializer() { return redisTemplate.getStringSerializer(); } }

在实现类中我们通过操作RestTemplate来实现接口中的方法~

Redis缓存实战

首先,我们如果想在Spring Boot项目中启用缓存,需要在启动类上加上注解@EnableCaching,这个是重点,要记住了!

首先介绍一下注解三剑客:@Cacheable,@CachePut,@CacheEvict。

@Cacheable:主要针对方法配置,能够根据方法的请求参数对其进行缓存,常用于查询操作

@CachePut:主要针对方法配置,能够根据方法的请求参数对其进行缓存,常用于修改操作

@CacheEvict:清空缓存,主要用于删除操作。

下面我们来看一下用法:

/** * value: 缓存的名称 * key: 缓存的键 * return 缓存的值 */ @Override @Cacheable(value = "users", key = "#id") public UserDO findOne(Long id) { // 如果我们第二次访问的时候,控制台没有打印出这句话说明是从缓存中取出 log.info("From MYSQL"); return userMapper.get(id); } @Override @CachePut(value = "users", key = "#userDO.id") public UserDO update(UserDO userDO) { // 执行之后,再次访问findOne的时候,应当没有打印出“From MySQL”,且返回的是我们修改后的值,说明这一步缓存成功 if (userMapper.update(userDO) > 0) { return userMapper.get(userDO.getId()); } return null; } @Override @CacheEvict(value = "users", key = "#id") public int delete(Long id) { // 执行之后去rdm中查看即可 return userMapper.delete(id); } 测试1

第一次访问findOne

Spring Boot 2.x(十四):整合Redis,看这一篇就够了


Spring Boot 2.x(十四):整合Redis,看这一篇就够了

第二次访问findOne:

仍然是刚刚的结果,但是控制台没有打印出任何东西,说明缓存成功

测试2

调用update后再次调用findOne:

Spring Boot 2.x(十四):整合Redis,看这一篇就够了


Spring Boot 2.x(十四):整合Redis,看这一篇就够了


可以看出信息已被修改且未访问数据库

测试3

访问delete,查看rdm:

说明删除成功~

原创文章,文笔有限,才疏学浅,文中若有不正之处,万望告知。

源码地址

Github
Gitee

记得顺手点个star,您的肯定是对我写作最大的动力!

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpjgpw.html