6.0Spring Boot 2.0实战 Redis 分布式缓存6.0|学习笔记

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 快速学习6.0Spring Boot 2.0实战 Redis 分布式缓存6.0。

开发者学堂课程【Spring Boot 2.5.x 开发实战6.0Spring Boot 2.0实战 Redis 分布式缓存6.0】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/853/detail/14071


6.0Spring Boot 2.0实战 Redis 分布式缓存6.0

 

内容介绍:

一、本节内容基础介绍

二、Spring Data Redis6.0

三、Java Spring Data for Redis 架构

四、Linux Install Redis

五、高级面试题

 

一、本节内容基础介绍

本节课讲解 Redis 高并发缓存,在现在的互联网公司中,Redis 的使用非常普遍。新型互联网公司中使用这种开源的缓存,Redis 免费并且其功能特性越来越完善,Redis 无论在基础功能使用(规则丰富的数据类型)还是高级功能使用(集群模式:主从集群、高可用集群、分配集群等等)方面的支持都非常好,而且在扩展知识项(推送、分布式事务等等新特性)。Redis 的生态也非常完善,对 Java 语言或者其他编程语言的体系比较完善。

Spring Boot 为后续 Java 应用开发做铺垫,Spring Cloud 架构属于高阶课程。

 

二、Spring Data Redis6.0

1.介绍

Spring Data 提供了 for Redis一系列接口,本质上 Java 使用Redis 前,安装了基本 Java redis 驱动,并且使用基础的网络连接与 Redis 服务进行交互。本节练习 Redis 单机点模式的使用(为了简单演示体验,一般使用主从、高可用或者侧面集群模式)。

注意:Redis 为最新,可以自己加载一台 Redis 虚拟机去编译和安装,在 Java 中连接远程 Redis 时,Redis 服务器端要允许远程端口连接(生产环境下还要启用安全验证)。

Redis 迭代非常快,功能越来越完善

Java Spring Boot 程序是通过 Java Spring Data for Redis 连接Redis。Redis 的配置、构建等等可以在替换基础的链接池组建可以用 Jedis、Ledis ,但是需要注意,Redis 本身有单点和集群模式,配置文件时需要注意配置文件的修改。Redis 的特性在 Java 语言中使用时要考虑链接库的版本、工具库的版本,需要支持操作。

2.Java Spring Data 2.x for Redis 新特性

(1)支持多种 Redis 驱动程序/连接器的低级抽象(Jedis 和 Lettuce。JRedis 和 SRP 过期)

(2)Spring Data Access exception 和 Redis driver exceptions 转换

(3)RedisTemplate 高级抽象封装 Redis 操作,异常转换和序列化工作

(4)Pubsub 发布订阅模式支持(例如消息驱动 POJO 的MessageListenerContainer)

(5)支持 Redis Sentinel 和 Redis Cluster 集群模式

(6)JDK,String,JSON和Spring Object / XML 映射序列化器

(7)基于 Redis 的 JDK Collection 实现

(8)Atomic counter 原子计数器

(9)Sorting and Pipelining 功能

(10专门 AP 支持 SORT,SORT 7GET 模式和返回批量值数据(11Redis 实现了 Spring 3.1缓存抽象

(12自动实现 Repository 接口,@EnableRedisRepositories支持自定义查找方法

(13支持存储库的 CDl

3.安装步骤

(这里集成的 Spring Boot 是基于最新版本)

(1)Upgrade to Java 8.

(2)Upgrade to Lettuce 5.0.

3Removed support for SRP and JRedis drivers.

(4) Reactive connection support using Lettuce.

5lntroduce Redis feature-specific interfaces forRedisConnection.

(6)Improved RedisConnectionFactory configuration with JedisClientConfiguration and LettuceClientConfiguration.

(7)Revised RedisCache implementation.

(8)Add SPOP with count command for Redis 3.2.

说明:

Redis 本身也在不断迭代,功能越来越完善,Java Spring boot 连接使用 SpringData for Redis,Redis  整个配置构建可以在替换基础的链接池组件,可以用 Jedis 和 Lettuce

Redis本身有单点也有集群模式,配置文件要注意配置参数的修改,整个 Redis 特性在 Java 原理使用中要考虑链接库的版本能支持这些操作。

Java 一定要用 Java8 或者 Jdk1.8 版本,Lettuce 也是5.0以后的版本,后面采用这个默认的集成模式。

过程中还比较有意思,实际  Redis 链接工厂, Factory 是属于工厂模式造链接词链接,每次创建  Redis 链接的时候,可以专门通过工厂类型的来进行创建,然后进行使用,另外可以通过配置给 Redis  客户端工厂添加必要配置。

4.Redis APl

·org.springframework.data.redis.connectio 包

·RedisConnection

·RedisConnectionFactory Interface

基础核心包 org.springframework.data.redis.core,里面包含两个重要类型,一Redis Connection,二Redis Connection Factory Interfac, Redis 链接对象需要指定 Redis 链接工厂,不同的链接池重构了 Redis  的链接工厂,接受的参数大部分一样,如主机、数据库、密码等重要参数都可控,同时也有默认策略,与链接MySQL的链接池相似。

5.RedisConnection 解析

(1)RedisConnection 为 Redis 通信提供核心组件

(2)处理与 Redis 服务器后端的通信。

(3)自动将底层链接异常转换为 Spring DAO 异常

(4)可以在不更改任何代码的情况下切换连接器

(5)操作语义保持不变。

(6)统—接口

(7)工厂模式

(8)仓储模式

 

三、Java Spring Data for Redis 架构

1.介绍

Redis 基础命令最主要的是 get 和set(保持和查询)

Spring 提供了 RedisTemplate 这样一个模板的类型,其封装了 Redis 的基本操作。在之前的课程中,针对 MySQL、MongoDB 也有 Template 的类型,但是 Redis 使用时和其有区别,链接池使用 Jedis 或者 Ledis(一般使用 Jedis 较多)。

image.png

2.RedisTemplate

lnterface

Description

GeoOperations

Redis geospatial操作,例如GEOADD,GEORADIUS....

HashOperations

Redis hash操作

HyperLogLogOperations

Redis HyperLogLog操作,例如PFADD, PFCOUNT...

ListOperations

Redis list操作

SetOperations

Redis set操作

ValueOperations

Redis string (or value)操作

ZSetOperations

Redis zset (or sorted set)操作

 

四、Linux Install Redis

1. Linux 启动 Redis Server

image.png

2.必要条件

(1)Linux

(2)Redis 2.6 or above

(3)Jedis or Lettuce

Redis 提供 Redis Reactive Driver 接口驱动)

3.举例

控制器中存放了新增和查询

查询中调用了 redisRepository 这样的一个类型

image.png

接口中自定义了一些方法(增删改查):

public interface RedisRepository{

Users find( Integer id );

Map<Integer, Users> findA11();

void save(Users user);

void update(Users user);

void delete( Integer id);

}

实现时有一个 RedisTemplate 的类型,用改模板类型对 redisTemplate 操作(基础的增删改查操作)

image.png

下图说明使用的是 Spring data 的Redis

image.png

该处加了 jedis

image.png

可以配置对应的参数,可以从配置文件中读取:

image.png

Bean 构造方法可以指定(传入主机名、端口),主机名和端口这两个参数都可以通过 value 注解的方式从配置文件中自动加载(更简单)。 

image.png

这里是在配置文件中指定给 RedisTemplate 一个 Jedis 连接池的对象,然后就能自己创造链接。

image.png

4. Redis 安装

Redis 安装可以直接使用命令

启动方面是自己编译自己启动(版本如下图)

版本为 6.0.8,并且属于单点模式启动(独立模式启动,只有一个节点,方便调试)

注意:在虚拟机中启动,远程时一定要开启 IP 保护模式的限制的解除,IP 要改。

image.png

如果不用命令行,可以用一个可视化工具(如下图)

image.png

将地址和端口改为正确的并设置名字:

image.png

一定要保证连接成功,否则加入代码会一直出错。

5.测试

要保存100个用户(代码不全)

image.png

调用 redisRepository 做查询操作(代码不全)

image.png

getAll 查询所有:

 image.png

注意:一定要先将 Redis 安装好,然后配置其网络安全模式,客户端才能使用 Redis Desktop Manager0.9.3.817 进行操作

 

五、高级面试题

Redis 安全连接索引机制

GEO 地理位置查询

Spring Data Redis Reactive APl 实现

spring Data Transaction 事务实现

Spring Data Redis  消息推送实现

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3天前
|
canal 缓存 NoSQL
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
根据对一致性的要求程度,提出多种解决方案:同步删除、同步删除+可靠消息、延时双删、异步监听+可靠消息、多重保障方案
Redis缓存与数据库如何保证一致性?同步删除+延时双删+异步监听+多重保障方案
|
18天前
|
编解码 NoSQL Java
使用Spring Boot + Redis 队列实现视频文件上传及FFmpeg转码的技术分享
【8月更文挑战第30天】在当前的互联网应用中,视频内容的处理与分发已成为不可或缺的一部分。对于视频平台而言,高效、稳定地处理用户上传的视频文件,并对其进行转码以适应不同设备的播放需求,是提升用户体验的关键。本文将围绕使用Spring Boot结合Redis队列技术来实现视频文件上传及FFmpeg转码的过程,分享一系列技术干货。
55 3
|
19天前
|
缓存 NoSQL Java
Redis深度解析:解锁高性能缓存的终极武器,让你的应用飞起来
【8月更文挑战第29天】本文从基本概念入手,通过实战示例、原理解析和高级使用技巧,全面讲解Redis这一高性能键值对数据库。Redis基于内存存储,支持多种数据结构,如字符串、列表和哈希表等,常用于数据库、缓存及消息队列。文中详细介绍了如何在Spring Boot项目中集成Redis,并展示了其工作原理、缓存实现方法及高级特性,如事务、发布/订阅、Lua脚本和集群等,帮助读者从入门到精通Redis,大幅提升应用性能与可扩展性。
41 0
|
4天前
|
存储 NoSQL Redis
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
Redis持久化、RDB和AOF方案、Redis主从集群、哨兵、分片集群、散列插槽、自动手动故障转移
SpringCloud基础7——Redis分布式缓存,RDB,AOF持久化+主从+哨兵+分片集群
|
14天前
|
缓存 NoSQL 关系型数据库
MySQL与Redis缓存一致性的实现与挑战
在现代软件开发中,MySQL作为关系型数据库管理系统,广泛应用于数据存储;而Redis则以其高性能的内存数据结构存储特性,常被用作缓存层来提升数据访问速度。然而,当MySQL与Redis结合使用时,确保两者之间的数据一致性成为了一个重要且复杂的挑战。本文将从技术角度分享MySQL与Redis缓存一致性的实现方法及其面临的挑战。
37 2
|
17天前
|
NoSQL Redis 缓存
Redis 加持下的 Spring 应用性能革命:见证毫秒级响应速度,打造极致用户体验!
【8月更文挑战第31天】Redis 是一个高性能键值存储系统,常用于数据库、缓存及消息中间件。与 Spring 框架集成后,可显著提升应用性能,特别是在高并发场景下。本文通过电子商务网站商品详情页的例子,展示了如何配置 Redis 并使用 `RedisTemplate` 进行数据操作,通过缓存策略优化应用性能,减轻数据库压力。例如,在 `ProductService` 类中,先从 Redis 获取商品信息,若未命中则从数据库获取并缓存至 Redis。此外,还介绍了如何通过 REST 控制器模拟 HTTP 请求进行测试。在实际项目中,结合 Spring Cache 注解可更便捷地管理缓存策略。
30 0
|
17天前
|
Java UED Maven
紧跟技术潮流:手把手教你构建响应式Vaadin应用,让用户体验无缝接轨!
【8月更文挑战第31天】本文从零开始,详细介绍如何使用强大的Java框架Vaadin构建流畅且响应式的Web应用程序。首先,确保安装JDK 1.8+、Maven 3.3.9+及IDE。接着,创建Maven项目并添加Vaadin依赖。然后,通过继承`UI`类创建主界面,并定义自定义主题与样式。利用Vaadin的响应式布局组件,如`HorizontalLayout`和`VerticalLayout`,实现多设备兼容性。
26 0
|
17天前
|
缓存 NoSQL Redis
Entity Framework Core 与 Redis 强强联手!实现高速缓存,提升应用性能超厉害
【8月更文挑战第31天】在现代应用开发中,结合 Entity Framework Core 与 Redis 可显著提升数据访问速度。Entity Framework Core 是一个强大的 ORM 框架,但处理频繁访问的数据时可能遇到性能瓶颈。Redis 作为高性能内存数据库,具备快速读写能力。两者结合利用 Redis 高速缓存,减少直接数据库访问,提高应用响应速度及性能。
24 0
|
19天前
|
缓存 NoSQL Java
惊!Spring Boot遇上Redis,竟开启了一场缓存实战的革命!
【8月更文挑战第29天】在互联网时代,数据的高速读写至关重要。Spring Boot凭借简洁高效的特点广受开发者喜爱,而Redis作为高性能内存数据库,在缓存和消息队列领域表现出色。本文通过电商平台商品推荐系统的实战案例,详细介绍如何在Spring Boot项目中整合Redis,提升系统响应速度和用户体验。
42 0
|
23天前
|
缓存 NoSQL 网络安全
【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?
【Azure Redis 缓存】Azure Redis服务开启了SSL(6380端口), PHP如何访问缓存呢?