文章目录

  • 1. Jedis
  • 1.1 认识Jedis
  • 1.2 连接Jedis
  • 1.3 简单使用
  • 1.4 Jedis连接池使用
  • 与直连对比
  • 简单使用
  • 连接池配置
  • 1. 资源数控制
  • (1)适合的maxTotal
  • (2)适合的maxIdle 和minIdle
  • 2. 借还参数
  • 3. 常见问题
  • (1)超时连接
  • (2)资源耗尽
  • 4. 解决思路
  • 5. 常见问题案例演示
  • 2. lettuce
  • 3. redis -py(Pathon客户端)
  • 3.1 获取redis-py
  • 3.2 基本使用
  • 4. go语言客户端
  • 4.1 Redigo客户端选择
  • 3.2 连接
  • 3.3 基本使用


1. Jedis

1.1 认识Jedis

mfc redis客户端 redis客户端使用_连接池

  • **使用java操作redis的一个中间件,Redis 官方推荐的 java连接开发工具 **
  • Jedis是Redis官方推出的一款面向Java的客户端,提供了很多接口供Java语言调用
  • 使用jedis对象,操作方法函数与redis的api完全一致

<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>4.1.1</version>
</dependency>
public class TestPing {
     public static void main(String[] args) {
     	// 1、 new Jedis 对象即可
         Jedis jedis = new Jedis("127.0.0.1", 6379);
         // jedis 所有的命令就是我们之前学习的所有指令!所以之前的指令学习很重要
         String response = jedis.ping();
         System.out.println(response); // PONG
     }
 }

1.2 连接Jedis

mfc redis客户端 redis客户端使用_mfc redis客户端_02

  • 每次相当于一个TCP连接,线程是不安全的

mfc redis客户端 redis客户端使用_redis_03

1.3 简单使用

mfc redis客户端 redis客户端使用_mfc redis客户端_04


mfc redis客户端 redis客户端使用_redis_05


mfc redis客户端 redis客户端使用_redis_06

1.4 Jedis连接池使用

与直连对比

mfc redis客户端 redis客户端使用_mfc redis客户端_07


mfc redis客户端 redis客户端使用_mfc redis客户端_08

  • 不用每次进行TCP连接的三次握手,四次挥手

mfc redis客户端 redis客户端使用_redis_09

简单使用

mfc redis客户端 redis客户端使用_连接池_10


mfc redis客户端 redis客户端使用_mfc redis客户端_11

连接池配置
1. 资源数控制

mfc redis客户端 redis客户端使用_redis_12

(1)适合的maxTotal

mfc redis客户端 redis客户端使用_学习_13


mfc redis客户端 redis客户端使用_redis_14


mfc redis客户端 redis客户端使用_连接池_15

(2)适合的maxIdle 和minIdle

mfc redis客户端 redis客户端使用_mfc redis客户端_16

  • 其实maxTotal属性所表示的最大连接数,只是给出了一个连接数量的上限,
  • 而maxIdle属性所代表的最大空闲的连接数,才真正是业务可用的最大连接数。
  • 如果maxTotal和maxIdle二者不相等,就会涉及到连接的销毁与创建操作,会产生一定的开销,所以建议设置maxIdle=maxTotal,尽可能的避免由于频繁地创建和销毁连接而造成连接池性能下降,使连接池能够达到最佳性能。
2. 借还参数

mfc redis客户端 redis客户端使用_学习_17

3. 常见问题
(1)超时连接

mfc redis客户端 redis客户端使用_mfc redis客户端_18

  • maxWaitMillis设置参数问题
(2)资源耗尽

mfc redis客户端 redis客户端使用_学习_19

  • maxIdle 和minIdle设置不相等的情况
4. 解决思路

mfc redis客户端 redis客户端使用_连接池_20

mfc redis客户端 redis客户端使用_java_21

5. 常见问题案例演示
  • 连接泄露-没有关闭连接
  • mfc redis客户端 redis客户端使用_连接池_22


  • mfc redis客户端 redis客户端使用_redis_23


  • mfc redis客户端 redis客户端使用_学习_24


  • mfc redis客户端 redis客户端使用_java_25


2. lettuce

  • 在 SpringBoot2.x 之后,原来使用的jedis 被替换为了 lettuce?

  • jedis : 采用的直连多个线程操作的话,是不安全的

    • 如果想要避免不安全的,使用 jedis pool 连接池! 更像 BIO(阻塞) 模式
  • lettuce : 采用netty实例可以再多个线程中进行共享,不存在线程不安全的情况

    • 可以减少线程数据了,更像 NIO 模式

mfc redis客户端 redis客户端使用_java_26

3. redis -py(Pathon客户端)

3.1 获取redis-py

mfc redis客户端 redis客户端使用_java_27

3.2 基本使用

mfc redis客户端 redis客户端使用_连接池_28


mfc redis客户端 redis客户端使用_java_29


mfc redis客户端 redis客户端使用_java_30

mfc redis客户端 redis客户端使用_mfc redis客户端_31

4. go语言客户端

4.1 Redigo客户端选择

mfc redis客户端 redis客户端使用_redis_32

3.2 连接

mfc redis客户端 redis客户端使用_连接池_33

3.3 基本使用

mfc redis客户端 redis客户端使用_连接池_34