SpringBoot学习笔记(五)——整合redis

SpringBoot整合Redis 由于redis内部不提供Java对象的存储格式,因此当操作的数据以对象的形式存在时,会进行转码,转换成字符串格式后进行操作,为了方便开发者使用基于字符串为数据操作,spring boot整合redis时提供了专门的API接口StringRedisTemplate,你可以理解为这是RedisTemplate的一种指定数据泛型的操作API。以上使用的数据存储时一个键对应一个值,如果要维护的数据过多,可以使用别的数据存储结构,例如hash,它是一种一个键可以存储多个数据的存储模型。 阅读详情

本节记录springboot+JPA整合redis实现简单的缓存管理

目录

1、添加redis依赖,并Reload project2

2、配置redis

3、在controller中使用缓存管理

4、测试

SpringCache 的注解


1、添加redis依赖,并Reload project2

<!--redis-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
	<version>2.0.3.RELEASE</version>
</dependency>

2、配置redis

# redis
spring.redis.host=192.168.77.193
spring.redis.port=6379

在启动类DemoJpaApplication上添加@EnableCaching注解

@SpringBootApplication
@EnableCaching
public class DemoJpaApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoJpaApplication.class, args);
	}

}

3、在controller中使用缓存管理

在BookController的getBook上添加@Cacheable注解

@RequestMapping("/getbook")
@ResponseBody
@Cacheable(cacheNames = "books",unless = "#result==null")
public List<Book> getbook() {
  return bookRepo.findAll();
}

4、测试

访问/book/getbook接口报错,后台报错信息如下:

[Request processing failed; nested exception is org.springframework.data.redis.serializer.SerializationException: Cannot serialize; nested exception is org.springframework.core.serializer.support.SerializationFailedException: Failed to serialize object using DefaultSerializer; nested exception is java.io.NotSerializableException: com.galago.demo_jpa.entity.Book] with root cause

从报错信息可看出是Book类没有序列化导致报错。

Book序列化后,重启项目再次访问,未报错,问题解决 

 1)通过浏览器再访问多次,发现数据正常返回,后台没有打印查询语句,说明是从缓存中获取的数据

2)通过redis-cli验证是否存到缓存中,检测如下:

使用@CachePut、@CacheEvict、@Cacheable注解对update和delete实现缓存管理

@RequestMapping("/getbook")
@ResponseBody
@Cacheable(cacheNames = "books",unless = "#result==null")
public List<Book> getbook() {
    return bookRepo.findAll();
}

@RequestMapping("/getByid")
@ResponseBody
@Cacheable(cacheNames = "book")
public Book getOneBook(Integer id) {
    return bookRepo.getById(id);
}

@PostMapping("/add")
@ResponseBody
@CachePut(cacheNames = "book", key="#result.id")
public Book addBook(Book book) {
    return bookRepo.save(book);
}

@RequestMapping("/del")
@ResponseBody
@CacheEvict(cacheNames = "book")
public void deleteById(Integer id) {
    System.out.println(id);
    bookRepo.deleteById(id);
}

 

SpringCache 的注解

 1. 注解说明

@CacheConfig: 一般配置在类上,指定缓存名称,这个名称是和上面“置缓存管理器”中缓存名称的一致。
@Cacheable: 用于对方法返回结果进行缓存,如果已经存在该缓存,则直接从缓存中获取,缓存的key可以从入参中指定,缓存的 value 为方法返回值。
@CachePut: 无论是否存在该缓存,每次都会重新添加缓存,缓存的key可以从入参中指定,缓存的value为方法返回值,常用作于更新。
@CacheEvict: 用于清除缓存
@Caching: 用于一次性设置多个缓存。

2. 常用注解配置参数

value: 缓存管理器中配置的缓存的名称,这里可以理解为一个组的概念,缓存管理器中可以有多套缓存配置,每套都有一个名称,类似于组名,这个可以配置这个值,选择使用哪个缓存的名称,配置后就会应用那个缓存名称对应的配置。
key: 缓存的 key,可以为空,如果指定要按照 SpEL 表达式编写,如果不指定,则缺省按照方法的所有参数进行组合。
condition: 缓存的条件,可以为空,使用 SpEL 编写,返回 true 或者 false,只有为 true 才进行缓存。
unless: 不缓存的条件,和 condition 一样,也是 SpEL 编写,返回 true 或者 false,为 true 时则不进行缓存。

参考:

SpringBoot整合Redis缓存_Sun-yz的博客-优快云博客_springboot整合redis实现缓存管理中

springboot2与redis整合 Redis,对于大家来说应该不陌生,是经常使用的开发技术之一。原始的RDBMS关系型数据库,能够存储海量的数据,但是在某些特殊的情况下,性能并不是特别的好,例如热点数据的读写,数据缓存等。Redis作为NoSQL中的一员,基于内存数据存储,支持多种数据结构,单线程处理,是一款高性能的可持久化key-value数据库。对于Redis就不做过多介绍了,相信大家或多或少都了解过,下面重点描述Spring... 阅读详情

相关推荐

SpringBoot整合Redis缓存

Redis是一个高性能的Key-Value开源数据库,是一个非关系型的数据库,是为了解决高并发、高扩展,大数据存储等一系列的问题而产生的数据库解决方案。但它不能替代关系型数据库,只能作为特定环境下的扩充。...

m0_67402774的博客 1653

4、SpringBoot整合Redis(包含大部分数据类型的操作)

SpringBoot整合Redis 1、安装Redis,采用离线安装包安装 2、建项目 这一步需要两个依赖,选择web下面的Spring Web和非关系型数据库的Spring Data Redis,然后点击下一步,下一个界面直接点击完成即可。 3、使用Redis操作 以下是项目结构 3.1、pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0

daijianzhou的专栏 1444

从FinFET到NanoSheet:一文看懂TSMC制程技术的架构革命与性能飞跃

本文深入解析了TSMC从FinFET到NanoSheet的制程技术架构革命。FinFET通过三维立体结构解决了短沟道效应,而NanoSheet采用环绕栅极设计,实现了更强的静电控制与设计灵活性,结合EUV光刻技术,共同推动了芯片性能与能效的飞跃,为下一代AI与高性能计算奠定基石。

i3j4k5的博客 288

【Spring】SpringBoot整合Redis,用Redis实现限流(附Redis解压包)

本文介绍SpringBoot整合Redis并且进行接口的限流,文章主要介绍的是一种思想,具体代码还要结合实际。

qq_61024956的博客 6546

AXI4协议之AXI4-Lite接口详解及实战

本文首先对AXI4总线协议进行了一个简单的介绍,然后使用vivado提供的模板创建了一个AXI4-Lite Master的接口,并生成了一个具有Master和Slave的代码实例,阅读该示例代码,进行修改后用于自己的项目。

高阶近似的博客 2万+

LTE/NR中的相应cause场景【原创】

目录1.背景2.LTE EMM cause2.0 写在最前2.1 特殊处理的cause第一梯队第二梯队2.2 非特殊处理的cause3.NR cause 实网分析终端被拒等问题,经常遇到各类cause,其会对应不同的终端限制行为。查找已有资料后理解没有很深,自行总结本文用于梳理现象,如有错误敬请指正,转载请注明出处。 本文用于记录协议Ts 24.301及Ts 24.501中的cause及其对应行为。 已总结的cause值: 24.301中的cause分

2301_79567300的博客 3488

03-Java中操作redis实践

Redis 是一种C/S 架构的分布式缓存数据库,它有自带的命令行客户端,也有对应的Java或其它语言客户端,可以在这些客户端中通过一些API对redis进行读写操作。第一步:创建工程。创建maven父工程,例如03-redis,并在此工程下创建两个子工程,一个为redis-jedis,一个为redis-template,例如:第二步:添加父工程依赖修改父工程pom.xml文件,添加编译配置 Jedis的基本应用 简介 Jedis是Java中操作redis的一个客户端,类似通过jdbc访问mysql数据库。

qq_54781283的博客 752

个人信息保护合规审计人员(高级)能力考核试卷+面试模拟

《个人信息保护合规审计考试与面试指南》 摘要:本文提供个人信息保护合规审计考试及面试的全面指导。考试采用闭卷笔试形式,满分100分,合格线75分,时长120分钟,包含单选、多选、判断题及综合案例分析题。内容涵盖《个人信息保护法》核心条款、审计程序、风险评估等实务要点。面试环节采用情景模拟方式,重点考察应试者在压力下处理审计独立性、客户关系与监管要求的平衡能力,以及应对数据泄露等突发事件的处置流程。案例题聚焦大型互联网平台的数据收集、共享、跨境传输等高风险环节的合规审计,要求设计完整的审计方案框架。面试评分标

qq_41525079的博客 1142

redis总结

redis是什么         Redis是一个开源的、高性能的Key-Value存储系统,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set 有序集合)、hash(哈希类型)。Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个ap

做一个会编程的人 822

PyCharm 怎么不升级直接使用Jupyter Notebook

在PyCharm 中需要升级到 PyCharm Professional 版本,才能直接使用 Jupyter Notebook。从截图来看,Jupyter Notebook 已经成功启动,并且正在运行。这将在默认网络浏览器中打开一个新的标签页,显示文件浏览器界面。可以在这里创建和编辑。文件添加到 PyCharm 项目中,并使用纯文本编辑功能进行修改。支持与外部工具集成,可以配置它以调用命令行工具或脚本来启动。,参数可以根据需要设置,工作目录设置为项目根目录。,你仍然可以在本地环境中安装和运行。

Davina_yu的博客 994

Linux | Ubuntu18.04安装WIFI6 AX201驱动完整教程

本节介绍了如何在Ubuntu18下安装AX201驱动的教程。

九七的博客 8880

redis简单介绍

(一)redis简介 what:Redis是一个开源的、基于内存的缓存数据库 Redis:支持每秒十几万此的读/写操作 场景:由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成..

个人博客 897

【音视频基础】一篇搞懂视频的各种封装格式

在现代多媒体处理中,视频封装格式扮演着至关重要的角色。不同的封装格式决定了视频文件的存储方式、兼容性以及功能特性。无论是观看高清视频、编辑电影剪辑,还是在互联网上流式传输内容,理解各种视频封装格式的基础知识都是必不可少的。在这篇文章中,我们将详细介绍常见的视频封装格式,探讨为什么需要这些格式,以及它们各自的功能和区别,帮助你在选择和使用视频格式时做出更明智的决定。WEBM理解各种视频封装格式的功能和区别对于选择合适的格式至关重要。

m0_62599305的博客 2477

Redis基础篇学习笔记五:springBoot整合redis

Springboot整合redis

moliang1999的博客 378

【华为OD】华为性格测试(综合测试)高分策略

1、性格测试非常重要,是一次否决制,18 个月有效期,所以态度一定要认真对待,不要随便乱选;2、做题原则:正向原则,积极乐观向上3、时间为 25-30 分钟,会频繁出现重复选项重复出现的题目注意一致性。

笑着的程序员的博客 3万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SpringBoot整合Redis框架(学习笔记五)

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。......

Li_RC_XCN的博客 275

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SpringBoot学习笔记(五)—— SpringBoot整合SpringDataJPA、Redis

SpringBoot整合Spring Data JPA 添加Spring Data JPA的起步依赖 <!-- springBoot JPA的起步依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot...

常雪恨's Blog 318

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Redis(五)整合:SpringBoot如何整合Redis?

前言 SpringBoot应该不用过多介绍了吧!是Spring当前最火的一个框架,既然学习了Redis,我们肯定是要在实际项目中使用,那么肯定首选整合SpringBoot啦! 简单介绍下SpringBoot对Jedis的支持吧,在1.×版本的时候,SpringBoot的底层还是使用Jedis来连接Redis的,但是在2.×版本后,就换成了Lettuce。两者的区别如下: Jedis: 采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用 jedis pool 连接池! 更像 BIO 模式

大鱼的博客 4万+

详解SpringBoot整合Redis

SpringBoot整合Redis 在SpringBoot中一般使用RedisTemplate提供的方法来操作Redis。那么使用SpringBoot整合Redis 需要那些步骤呢。 1.JedisPoolConfig(这个是配置连接池) 2.RedisConnectionFactory(这个是配置连接信息,这里的RedisConnectionFactory是一个接口, 我们需要使用它的实...

XiangYida 12万+

Springboot整合Redis

首先我们要知道Redis是什么:Redis一个NoSQL数据库,常用作缓存使用( cache ),用户访问应用,如果找数据的话会先访问redis,如果redis中有数据的话就直接返回发给用户,如果redis中没有的话我们再去查数据库,找到了数据之后一方面存到redis中,另一方面再反馈给用户,目的是说如果用户下次再访问类似的数据的话,redis中就有了。Redis如何启动:双击;客户端双击exit就退出了。

桂林电子科技大学 -芳 5042

springboot整合redis

创建springboot整合redis工程: 首先我们要知道什么是redis: 三个步骤:补充:RedisTemplate对象提供了各种往redis数据库中存储数据的类型: 代码演示如下所示:注意:下面所有的步骤,要保证Redis数据库是开启的状态,要不然肯定连接不上Redis数据库 第一步: 第二步: 第三步: 又因为我们知道Redis数据库支持多种格式的存储数据形式,因此还可以往Redis数据库中存储哈希类型的数据(哈希类型:就类似于一个key里面又放入一个key,value),因此Redis

lwj_07的博客 4万+

SpringBoot整合redis+mysql

SpringBoot+Redis+mysql

陆卿之的博客 4627

SpringBoot整合Redis[详细版]

SpringBoot整合Redis[详细版]Redis是现在最受欢迎的NoSQL数据库之一,Redis是一个使用ANSI C编写的开源。spring-boot-starter-data-redis在SpringBoot中集成了两个模版一个是RedisTemplate,另一个为 StringRedisTemplate而虽然StringRedisTempate帮助我们做了序列化,但是存储数据的时候只能存储Sting类型的数据,而RedisTemplate可以存储Object类型,所以我们一个使用RedisT

wang20000102的博客 8914

【SpringBoot】SpringBoot整合Redis

SpringBoot整合Redis 首先我是在Windows上开发的,因此需要在Windows安装Redis,安装的教程Windows下安装Redis服务,这个教程很容易懂,我按照教程一步一步安装下来,很久就可以运行Redis了。 这个教程在【JAVA】IDEA中SpringBoot整合M...

阳阳的博客 2511

【SpringBoot整合系列】SpringBoot整合Redis[附redis工具类源码]

SpringBoot整合redis

低调做人,低调编码,神码都是浮云 1704

SpringBoot整合redis

1 前言 在平时开发中,redis肯定是我们必不可少的一个工具,那今天就将springBoot与redis整合起来。 准备一:创建一个springBoot工程 准备二:redis相关依赖 准备三:application.properties配置redis配置 准备四:添加redis配置类 准备五:测试 项目工程结构如图: 2 步骤实施 步骤一:创建一个springBoot工程 springBoot工程自己创建,记得选择web环境,方便后续访问 准备二:redis相关依赖 .

爪哇人的博客 5307
上一篇: SpringBoot学习笔记(四)——Spring Data JPA的使用
下一篇: SpringBoot学习笔记(六)——Spring Data Rest
^^_candice
博客等级 码龄10年 3粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值