Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能,大大简化我们在业务中操作缓存的代码。

Spring Cache只是提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。CacheManager是Spring提供的各种缓存技术抽象接口。

配置环境

Spring boot 使用Spring Cache时需要添加Cache依赖以及redis依赖

redis默认的Key序列化器为:JdkSerializationRedisSerializer ,需要进行修改避免出现乱码

在引导类上加  @EnableCaching,就代表当前项目开启缓存注解功能。

在配置文件中设置redis与cache 的配置

注解的详细介绍及使用方式

注解 说明
@EnableCaching 开启缓存注解功能                                                                            

@Cacheable

在执行方法前Spring先查看缓存中是否有数据,如有数据则直接返回缓存的数据,若无数据正常执行方法并将方法的返回值存入缓存.

@CachePut 将返回值方法存入缓存
@CacheEvict 将一条或多条数据从缓存中删除

@CachePut

/**
* CachePut:将方法返回值放入缓存
* value:缓存的名称,每个缓存名称下面可以有多个key
* key:缓存的key
*/
@CachePut(value = "userCache", key = "#result.id")
/*
#result.id 表示返回值中的id元素
key可以设许多值,例:#user.id 表示方法参数user对象的id元素//@CachePut(value = "userCache",key = "#p0")  //#p0 代表第一个参数
//@CachePut(value = "userCache",key = "#root.args[0]") //#root.args[0] 代表第一个参数
@CachePut(value = "userCache",key = "#id") //#id 代表变量名为id的参数
@GetMapping
public User save("/{id}"){return id;
}
*/
@PostMapping
public User save(User user){userService.save(user);return user;
}

@CacheEvict

/**
* CacheEvict:清理指定缓存
* value:缓存的名称,每个缓存名称下面可以有多个key
* key:缓存的key
*/
@CacheEvict(value = "userCache",key = "#id") //#id 代表变量名为id的参数
@DeleteMapping("/{id}")
public void delete(@PathVariable Long id){userService.removeById(id);
}

@Cacheable

/**
* Cacheable:在方法执行前spring先查看缓存中是否有数据,如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中
* value:缓存的名称,每个缓存名称下面可以有多个key
* key:缓存的key
*/
@Cacheable(value = "userCache",key = "#id")
@GetMapping("/{id}")
public User getById(@PathVariable Long id){User user = userService.getById(id);return user;
}

spring boot 集成 redis 详细介绍相关推荐

  1. Linux 安装Redis-6.2.5,配置及使用(RDB与AOF持久化、sentinel机制、主从复制、Spring Boot 集成 Redis)

    CentOS 7 安装Redis-6.2.5版本 Redis采用的是基于内存的单进程 单线程模型 的KV数据库,由C语言编写.官方提供的数据是可以达到100000+的qps 应用场景: 令牌(Toke ...

  2. Spring Boot集成Redis缓存之模拟高并发场景处理

    前言 同样我们以上一篇文章为例子,搭建好环境之后,我欧美可以模拟高并发场景下,我们的缓存效率怎么样,到底能不能解决我们实际项目中的缓存问题.也就是如何解决缓存穿透? Spring Boot集成Redi ...

  3. Spring Boot集成Redis缓存之RedisTemplate的方式

    前言 Spring Boot 集成Redis,将自动配置 RedisTemplate,在需要使用的类中注入RedisTemplate的bean即可使用 @Autowired private Redis ...

  4. Spring Boot 集成 Redis 缓存

    Spring Boot 集成 Redis 缓存 在此章,我们将 SpringBoot 集成 Redis 缓存,Redis是一个开源的,基于内存的数据结构存储,可以用作数据库.缓存和消息代理,在本章仅讲 ...

  5. spring boot 集成 redis spring-boot-starter-data-redis 2.1.7.RELEASE jedis: pool: #连接池配置 及踩坑经验

    目录 先上一些踩坑报错,各类报错 @org.springframework.beans.factory.annotation.Autowired(required=true) Error creati ...

  6. 【第二十三篇】Spring Boot集成redis

    1.1 简介 REmote DIctionary Server(Redis)是一个由Salvatore Sanfilippo写的key-value存储系统. Redis是一个开源的使用ANSI C语言 ...

  7. Spring Boot 集成 Redis 实现缓存机制

    本文章牵涉到的技术点比较多:spring Data JPA.Redis.Spring MVC,Spirng Cache,所以在看这篇文章的时候,需要对以上这些技术点有一定的了解或者也可以先看看这篇文章 ...

  8. spring boot actuator监控详细介绍一(超级详细)

    spring boot actuator介绍 Spring Boot包含许多其他功能,可帮助您在将应用程序推送到生产环境时监视和管理应用程序. 您可以选择使用HTTP端点或JMX来管理和监视应用程序. ...

  9. Spring Boot集成Redis,这个坑把我害惨了!

    最近项目中使用SpringBoot集成Redis,踩到了一个坑:从Redis中获取数据为null,但实际上Redis中是存在对应的数据的.是什么原因导致此坑的呢? 本文就带大家从SpringBoot集 ...

最新文章

  1. Google 各语言网站合集
  2. mysql一直拒绝登录_mysql 登录错误:1045 (28000)访问被拒问题
  3. 获取当前周一日期_Excel工作表中最全的时间和日期函数,效率、办公必备
  4. java中两短行代码合并一行_帮忙啊!!!!找出两个Java文件相似程度超过某一%的代码行。...
  5. AndroidStudio安卓原生开发_Activity_生命周期_单activity的生命周期_多activity启动关闭的时候生命周期关系---Android原生开发工作笔记85
  6. 再复杂的报表,用这3种方式,都能解决!
  7. MongoDB 的分片技术
  8. 揭秘黑客攻击内幕和20个黑客相关术语
  9. 线程创建常用的四种方式
  10. 家用千兆路由器排行榜前十名_路由器哪个牌子好?千兆路由器2019排行
  11. 海底捞激励员工的方法符合哪些激励理论的建议
  12. Java实现PDF转换成图片
  13. python怎样用填充颜色_python中如何给图形填充颜色
  14. <C++>我用煮粽子的时间拿捏了类和对象中友元的全部形式
  15. 【互联网人必备】最实用的6大专业搜索工具
  16. 使用FreeMarker导出固定格式word文档
  17. 互亿天线短信接口php文档
  18. springboot项目中的 Request method 'POST' not supported问题
  19. sql自动生成汉语拼音和首字母函数[转载]
  20. android 拨号器 目录,Android 电话拨号器

热门文章

  1. Failed to connect to the specified server. Server library could not be loaded
  2. 方法:如何解决用MFC实现的ping功能中把目标主机不可到达的当成ping通的问题
  3. Unity3d实现翻书效果
  4. Cascade R-CNN: High Quality Object Detection and Instance Segmentation(级联R-CNN:高质量目标检测与实例分割)
  5. Python实现Office自动化办公(实现Python对word基本操作、对excel基本操作、在word中插入表格、word中插入网站爬虫取图)
  6. 计算机作文1500字,我想作文1500字
  7. 程序的健壮性和鲁棒性
  8. 百度地图实时路况数据爬取
  9. 初级Java入行难,没公司要,难道市场真的饱和了吗?
  10. 《重构-改善既有代码的设计》读书笔记心得体会