springdataredis与springCache区别
代码实现角度
SpringCache只需要在方法上面加上@Cacable @CacacheEvict就可以实现缓存,比较简单!
Spring Data Redis需要修改原来的方法,加入逻辑才可以实现,相对复杂点!
存储方式角度
Spring Cache缓存在应用内存中,应用停止,缓存丢失啦!
Spring Data Redis缓存在Redis服务器,Redis可以持久化,缓存不会轻易丢失!
分布式角度
Spirng Cache只支持单机应用缓存,不支持分布式
SpringData Redis可以在分布式环境下使用
过期时间设置
SpringCache不支持过期时间设置
SpringDataRedis支持设置
结论:
如果你的项目的缓存数据,不需要在分布环境下使用,且不需要持久化,可以使用SpringCache
如果你的项目的缓存数据,需要分布式,或者需要持久态,都需要使用SpringDataRedis
SpringDataRedis 简介
Spring-data-redis 是 spring 大家族的一部分,提供了在 srping 应用中通过简单的配置访问 redis 服务,对 reids 底层开发包(Jedis, JRedis, and RJC)进行了高度封装,$\color{red}{RedisTemplate 提供了 redis各种操作。}$
导入依赖
|
|
修改配置文件
修改 application.yml ,在 spring 节点下添加配置
|
|
|
|
这样在查询的时候,就会自动将文章放入缓存
修改或删除后清除缓存
|
|
缓存过期处理
|
|
SpringCache 简介
Spring Cache 使用方法与 Spring 对事务管理的配置相似。Spring Cache 的核心就是对某个方法
进行缓存,其实质就是缓存该方法的返回结果,并把方法参数和结果用键值对的方式存放到
缓存中,当再次调用该方法使用相应的参数时,就会直接从缓存里面取出指定的结果进行返
回。
常用注解:
@Cacheable——-使用这个注解的方法在执行后会缓存其返回结果。
@CacheEvict——–使用这个注解的方法在其执行前或执行后移除SpringCache 中的某些元素。
在启动类上加注解
|
|
在方法上添加缓存注解
这样当此方法第一次运行,在缓存中没有找到对应的 value 和 key,则将查询结果放入缓存。
|
|
当我们对数据进行删改的时候,需要更新缓存。其实更新缓存也就是清除缓存,因
为清除缓存后,用户再次调用查询方法无法提取缓存会重新查找数据库中的记录并放入
缓存。
在 userService 的 update、deleteById 方法上添加清除缓存的注解
|
|
开发总结
springdataredis
- 在pom.xml导入spring data redis的坐标
- 在application.yml添加redis配置
- 在项目使用RedisTemplate
springCache
- 在启动类开启SpringCache缓存功能
- 在需要缓存的方法使用缓存注解 @Cachable @CacheEvict
- 原文作者:Jeremy Sze
- 原文链接:https://jeremy95-sze.github.io/post/springdataredis%E4%B8%8EspringCache%E5%8C%BA%E5%88%AB/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。