Jedis和Lettuce的区别

spring-boot-starter-data-redis有两种实现:lettuce 和 jedis 。然而默认是使用lettuce.

spring boot 2的spring-boot-starter-data-redis中,默认使用的是lettuce作为redis客户端,它与jedis的主要区别如下:

1.Jedis:

Jedis是同步的,不支持异步,Jedis客户端实例不是线程安全的,需要每个线程一个Jedis实例,所以一般通过连接池来使用Jedis.

优点:

  • 提供了比较全面的 Redis 操作特性的 API
  • API 基本与 Redis 的指令一一对应,使用简单易理解

缺点:

  • 同步阻塞 IO
  • 不支持异步
  • 线程不安全

如果不使用默认的lettuce,使用jedis的话,可以排除lettuce的依赖,手动加入jedis依赖,配置如下:


    org.springframework.boot
    spring-boot-starter-data-redis
    
        
            io.lettuce
            lettuce-core
        
    


    redis.clients
    jedis
    2.9.0


2.Lettuce:

Lettuce是基于Netty框架的事件驱动的Redis客户端,其方法调用是异步的,Lettuce的API也是线程安全的,所以多个线程可以操作单个Lettuce连接来完成各种操作,同时Lettuce也支持连接池.

优点:

  • 线程安全
  • 基于 Netty 框架的事件驱动的通信,可异步调用
  • 适用于分布式缓存

缺点:

  • API 更抽象,学习使用成本高

pom:


    org.springframework.boot
    spring-boot-starter-data-redis




    org.apache.commons
    commons-pool2

你可能感兴趣的:(Redis,redis,缓存,java)