打开网站是空白页面,那个网站有帮人做图的,网站怎么分类,政务公开和网站建设情况系列文章目录
分页查询–Java项目实战篇 全局异常处理–Java实战项目篇 完善登录功能–过滤器的使用 更多该系列文章请查看我的主页哦 文章目录系列文章目录前言一、Spring Cache介绍二、Spring Cache的使用1. 导入依赖2. 配置信息3. 在启动类上添加注解4. 添加注解4.1 CacheP…系列文章目录
分页查询–Java项目实战篇 全局异常处理–Java实战项目篇 完善登录功能–过滤器的使用 更多该系列文章请查看我的主页哦 文章目录系列文章目录前言一、Spring Cache介绍二、Spring Cache的使用1. 导入依赖2. 配置信息3. 在启动类上添加注解4. 添加注解4.1 CachePut注解4.2 CacheEvict注解4.3 Cacheable注解查看Redis存入的数据总结前言
在我们学习完Redis缓存之后明白了为什么要使用Redis。也通过学习写代码练习时需要使用Redis进行大量的设置值、删除值、还有大量的逻辑判断将数据加入或删除Redis缓存。虽说逻辑方面也比较简单但太过于繁琐。每个方法都得注入RedisTemplate使用redisTemplate.opsForValue().set(phone,code,60L, TimeUnit.SECONDS)这样的代码。才能使得数据库中的数据与Redis缓存中的数据保持一致从而避免用户读到的数据是脏数据修改前的数据与数据库的数据不一致现象。
然而Spring就给我们提供了Spring Cache框架来减少这部分的麻烦。使我们的开发可以更多的关注于业务逻辑。下面这篇文章我们就来讲述这个框架的使用。 一、Spring Cache介绍
Spring Cache是一个框架实现了基于注解的缓存功能只需要简单地加一个注解就能实现缓存功能。 Spring Cache提供了一层抽象底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。 CacheManager是Spring提供的各种缓存技术抽象接口。
针对不同的缓存技术需要实现不同的CacheManager
EhCacheCacheManager 使用EhCache作为缓存技术GuavaCacheManager 使用Google的GuavaCache作为缓存技术RedisCacheManager 使用Redis作为缓存技术
这里我们就用RedisCacheManager作为缓存技术来练习。
二、Spring Cache的使用
1. 导入依赖
在pom.xml文件中添加redis依赖和spring提供的cache依赖。 代码如下
dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId
/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-cache/artifactId
/dependency2. 配置信息
在application.yml文件中添加redis的一些基础信息和连接Mysql数据库一样将基本的密码端口等配置上去。time-to-live 1800000的单位为秒表示缓存中存入的数据在多少秒后清除。
代码如下
spring:redis:host: localhostport: 6379#password:database: 0cache:redis:time-to-live: 18000003. 在启动类上添加注解
在启动类上添加开启缓存注解功能的注解EnableCaching
代码如下
EnableCaching //开启缓存注解功能
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class,args);log.info(项目启动成功...);}
}4. 添加注解
4.1 CachePut注解
CachePut注解在执行添加操作时将新的数据添加到Redis缓存中以便于数据库查询的值和展示的数据一致。Redis底层执行的是set操作。
注解里的参数第一个数该缓存的名称“value”第二个参数是设置一个key作为缓存数据的key。如下述代码就会将新增的这条数据添加到Redis缓存中。 PostMappingCachePut(value setmealCache,key #setmealDto.categoryId_#setmealDto.status)public RString save(RequestBody SetmealDto setmealDto){setmealService.saveWithDish(setmealDto);return R.success(新增套餐成功);}4.2 CacheEvict注解
CacheEvict注解执行修改、删除数据操作时删除对应的所有该名称value值下的缓存数据以便于数据库查询的值和展示的数据一致。Redis底层执行的是del删除操作。
下次在删除修改完后查询时就会重新执行sql语句去数据库中查询数据这样就使得数据库与缓存数据一致。 PutMappingCacheEvict(value setmealCache,allEntries true)public RString update(RequestBody SetmealDto setmealDto){setmealService.updateWithDish(setmealDto);return R.success(修改成功);}4.3 Cacheable注解
Cacheable注解和上面的参数也是相同的将查询的数据放到Redis中所以Redis底层代码也是做的set操作。 GetMapping(/list)//将返回的结果存入redis缓存中Cacheable(value setmealCache,key #setmeal.categoryId_#setmeal.status)public RListSetmeal list(Setmeal setmeal){LambdaQueryWrapperSetmeal queryWrappernew LambdaQueryWrapper();queryWrapper.eq(setmeal.getCategoryId()!null,Setmeal::getCategoryId,setmeal.getCategoryId());queryWrapper.eq(setmeal.getStatus()!null,Setmeal::getStatus,setmeal.getStatus());queryWrapper.orderByDesc(Setmeal::getUpdateTime);ListSetmeal list setmealService.list(queryWrapper);return R.success(list);}查看Redis存入的数据
在Redis中我们也可以看到和我们注解中的信息能够对应的上。 如下图所示
总结
这就是Spring Cache框架的简单使用可以更加快捷的将Redis缓存中的数据存入或删除。逻辑方面也不需要我们去编写像以前在查询时先看缓存中是否有该数据如果有直接返回数据没有在进行sql语句查询数据库将数据返回并且存入Redis的逻辑。学习完spring cache框架后我们只需要在方法上加注解设置value、key的值就可以了。 心态还需努力呀~