SpringBoot学习历程(十二):SpringBoot2.0集成redis
前言
- 本人github仓库地址:https://github.com/RabbitsInTheGrass/springBoot-Learning
1. redis简介
Redis是一个开源免费的高性能key-value数据库。。。。简介参见本人Redis 系列教程
SpringBoot提供了Redis集成的组件包:spring-boot-starter-data-redis,在1.x的版本中默认使用jedis客户端,而在2.x版本中默认使用的lettuce客户端。
两种客户端的区别如下:
- Jedis和Lettuce都是Redis Client
- Jedis 是直连模式,在多个线程间共享一个 Jedis 实例时是线程不安全的,
- 如果想要在多线程环境下使用 Jedis,需要使用连接池,
- 每个线程都去拿自己的 Jedis 实例,当连接数量增多时,物理连接成本就较高了。
- Lettuce的连接是基于Netty的,连接实例可以在多个线程间共享,
- 所以,一个多线程的应用可以使用同一个连接实例,而不用担心并发线程的数量。
- 当然这个也是可伸缩的设计,一个连接实例不够的情况也可以按需增加连接实例。
- 通过异步的方式可以让我们更好的利用系统资源,而不用浪费线程等待网络或磁盘I/O。
- Lettuce 是基于 netty 的,netty 是一个多线程、事件驱动的 I/O 框架。
我的项目是使用的是Spring Boot 2.1.9.RELEASE版本
2. 引入依赖
<!-- 引入redis依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
3. 配置属性
spring:
redis:
database: 0 # Redis数据库索引(默认为0)
host: localhost # Redis服务器地址
port: 6379 # Redis服务器连接端口
password: # Redis服务器连接密码(默认为空)
timeout: 0 # 连接超时时间(毫秒)
lettuce:
pool:
min-idle: 5 # 连接池中的最小空闲连接,默认 0
max-idle: 10 # 连接池中的最大空闲连接,默认 8
max-active: 8 # 连接池最大连接数(使用负值表示没有限制)默认 8
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)默认 -1
shutdown-timeout: 100ms