Redis 之Jedis和Lettuce客戶端

2021-10-09 01:56:07 字數 760 閱讀 3496

lettuce 和 jedis 的定位都是redis的client。

jedis:當多執行緒使用同乙個連線時,是執行緒不安全的。所以要使用連線池,為每個jedis例項分配乙個連線。

lettuce:基於netty的,連線例項(statefulredisconnection)可以在多個執行緒間併發訪問,因為statefulredisconnection是執行緒安全的,所以乙個連線例項(statefulredisconnection)就可以滿足多執行緒環境下的併發訪問,當然這個也是可伸縮的設計,乙個連線例項不夠的情況也可以按需增加連線例項。

為什麼jedis不是執行緒安全的?

參考:1、socket是乙個共享變數,會導致多個執行緒執行connect方法時出現socket異常。

2、共享資料流引起的。

jedis多執行緒操作

jedis本身不是多執行緒安全的,這並不是jedis的bug,而是jedis的設計與redis本身就是單執行緒相關,jedis例項抽象的是傳送命令相關,乙個jedis例項使用乙個執行緒與使用100個執行緒去傳送命令沒有本質上的區別,所以沒必要設定為執行緒安全的。但是如果需要用多執行緒方式訪問redis伺服器怎麼做呢?那就使用多個jedis例項,每個執行緒對應乙個jedis例項,而不是乙個jedis例項多個執行緒共享。乙個jedis關聯乙個client,相當於乙個客戶端,client繼承了connection,connection維護了socket連線,對於socket這種昂貴的連線,一般都會做池化,jedis提供了jedispool。

redis之jedis命令綜合

jedis.set hello worl 插入值 system.out.println hellor jedis.get hello 取值 redis中的列表 rpush 將給定值推入列表的右端 lrange 獲取列表在給定範圍上的所有值 lindex 獲取列表在給定位置上的單個元素 lpop 從列...

Redis(2) Jedis和Redis資料型別

jedis的使用 導包 import org.junit.test import redis.clients.jedis.jedis import redis.clients.jedis.jedispool public class redistest test public void run2 基...

Redis(五)之整合Jedis與Spring

思路 建立乙個redis操作的介面。分別建立兩個實現類對應redis 的單機版和集群版。當使用單機版redis時,配置單機版的實現類,當使用集群版本的時候,配置集群版的實現類。redis客戶端介面,在這裡新增常用方法 public inte ce jedisclient redis客戶端單機版實現類...