Java的Redis客戶端選擇-jedis與Lettuce


Lettuce 和 Jedis 的定位都是Redis的client,所以他們當然可以直接連接redis server。

Jedis在實現上是直接連接的redis server,如果在多線程環境下是非線程安全的,這個時候只有使用連接池,為每個Jedis實例增加物理連接

Lettuce的連接是基於Netty的,連接實例(StatefulRedisConnection)可以在多個線程間並發訪問,應為StatefulRedisConnection是線程安全的,所以一個連接實例(StatefulRedisConnection)就可以滿足多線程環境下的並發訪問,當然這個也是可伸縮的設計,一個連接實例不夠的情況也可以按需增加連接實例。

從springboot2.0開始已經默認使用Luttuce,但仍然提供兩種客戶端供使用。

另外提一下配置

從spring-boot-starter-redis 1.4.7.RELEASE是該依賴的最后一個版本,遷移到spring-boot-starter-data-redis

在springboot1.4.7之前的版本配置客戶端連接池如下:

spring:
  redis:
    pool:
      maxActive: 5000
      maxIdle: 30
      minIdle: 5
      max-wait: 2000

在1.4.7版本之后如果扔使用以上配置會提示你:Deprecated configuration property 'spring.redis.pool.max-active' ,即使配了也是失效配置。在RedisProperties(springboot autoconfig jar包)新增了Jedis和Lettuce內部類用來配置客戶端連接池,如下

Jedis可替換為Lettuce

spring:
  redis:
    jedis:
      pool:
        maxActive: 5000
        maxIdle: 30
        minIdle: 5
        max-wait: 2000

至於客戶端的選擇,建議Lettuce。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM