redis 為什麼快

2022-08-30 23:30:25 字數 545 閱讀 1065

redis採用自己實現的事件分離器,效率比較高,內部採用非阻塞的執行方式,吞吐能力比較大。

不過,因為一般的記憶體操作都是簡單訪問操作,執行緒占用時間相對較短,主要問題在io上,因此,redis這種模型是合適的,但是如果某乙個執行緒出現問題導致執行緒占用很長時間,那麼reids的單執行緒模型效率可想而知.

引自網路:

總體來說快速的原因如下: 

1)絕大部分請求是純粹的記憶體操作(非常快速) 

2)採用單執行緒,避免了不必要的上下文切換和競爭條件 

3)非阻塞io 

內部實現採用epoll,採用了epoll+自己實現的簡單的事件框架。epoll中的讀、寫、關閉、連線都轉化成了事件,然後利用epoll的多路復用特性,絕不在io上浪費一點時間 

這3個條件不是相互獨立的,特別是第一條,如果請求都是耗時的,採用單執行緒吞吐量及效能可想而知了。應該說redis為特殊的場景選擇了合適的技術方案。

redis實際上是採用了執行緒封閉的觀念,把任務封閉在乙個執行緒,自然避免了執行緒安全問題,不過對於需要依賴多個redis操作的復合操作來說,依然需要鎖,而且有可能是分布式鎖

redis為什麼快

如果我們執行的伺服器是多核伺服器,為了充分利用多核優勢我們可以在單台伺服器起多個 redis 服務,或者架設 主從複製 哨兵模式 集群模式等多機方案。redis 服務執行時只是處理客戶端請求是單程序單執行緒的,但是服務執行時會有其他程序或執行緒處理其他的事,比如rdb的檔案的生成就會在子程序中進行等...

Redis為什麼這麼快?

今天我在乙個技術群裡提出乙個問題 redis為什麼這麼快,redis的那些特性能夠支援了它的高併發?之前的我,也只是知道redis是記憶體資料庫,所以讀取速度快 io使用的是多路復用,使用乙個執行緒來輪詢描述符,減少了執行緒上下文的切換,將資料庫的開 關 讀 寫都轉化成了時間,所以io時也有加速。雖...

Redis為什麼那麼快

前言redis是基於鍵值對的nosql資料庫,redis的value可以由string,hash,list,set,zset,bitmaps,hyperloglog等多種資料結構和演算法組成。redis還提供了鍵過期,發布訂閱,事務,lua指令碼,哨兵,cluster等功能。redis執行命令非常快...