Java基础之《spring与redis通讯原理》

1、spring连接redis底层主要采用了redis集成组件包:spring-boot-starter-data-redis和commons-pool2
<!--redis启动器-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 连接池 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>
spring-boot-starter-data-redis依赖于spring-data-redis和lettuce 

2、spring-data-redis
Spring Data Redis是Spring Data大家庭中的一员,和Spring生态结合的很好,它提供了低级别(RedisTemplate)和高级别(ListOperations)的抽象,使我们很方便的操作Redis

3、lettuce-core
虽然Spring Data Redis通过RedisTemplate来操作redis的读写,但底层封装采用的是Lettuce。Lettuce是一个可伸缩线程安全的Redis客户端,多个线程可以共享同一个RedisConnection(即多条线程公用一条TCP)

4、netty-handler
redis的读写操作,spring用了lettuce,但是spring和redis的网络通信,lettuce并没有自己实现,而是采用了netty。netty是一个基于NIO的客户、服务器端的网络编程框架,使用netty可以确保你快速和简单的开发出一个网络应用

5、reactor-core
reactor-core是spring的一个基于java的响应式编程框架,lettuce大量用了响应式编程来写代码

6、commons-pool2
commons-pool2是Apache提供了一个通用的对象池技术,对象池简单来说就是存放对象的池子,可以存放任何对象,并对这些对象进行管理。它的作用是避免了分配内存和创建堆中对象的开销,避免了释放内存和销毁堆中对象的开销。lettuce就是采用commons-pool2来管理redis的连接池

7、什么是Lettuce?
Lettuce是一个Redis的java驱动包,RedisTemplate底层就是采用了Lettuce来实现的
内部采用了netty构建的完全非阻塞的Redis客户端,可提供响应式、异步和同步数据访问
Lettuce翻译成中文是一颗生菜
官网:https://lettuce.io/

8、Lettuce使用的时候依赖于四个主要组件
RedisURI:连接信息
RedisClient:(单机版)Redis客户端,另外集群连接有一个定制的RedisClusterClient(集群版)
Connection:Redis连接,主要是StatefulConnection或者StatefulRedisConnection的子类,连接的类型主要由连接的具体方式(单机、哨兵、集群)选定,比较重要
RedisCommands:Redis命令API接口,基本上覆盖了Redis发行版本的所有命令,提供了同步(sync)、异步(async)、反应式(reactive)的调用方式,对于使用者而言,会经常跟RedisCommands系列接口打交道

猜你喜欢

转载自blog.csdn.net/csj50/article/details/119136253