Redis的優勢
性能高不僅跟執行緒模型有關,它有很多原因,主要有如下3點:
- 基于記憶體;
- 單執行緒,但IO多路復用的利用率高;
- 資料結構為高性能優化,
下面分別闡述,
Redis的優勢:基于記憶體
性能高低都是相對的,Redis是基于記憶體的資料庫,相對的我們拿傳統的基于磁盤的資料庫進行對比,如圖:
其中,Redis資料庫基于記憶體,分場景如下:
- 資料查詢類場景:記憶體中有全量的資料,可以直接從記憶體中取得;
- 資料寫入類場景:如果配置的是同步持久化,寫入記憶體的同時,也會寫入磁盤,性能有所降低,但是由于Redis使用的是IO多路復用,同時沒有執行緒競爭,因此IO利用率很高,
- 資料寫入類場景:如果配置的是異步持久化,寫入記憶體成功,即回應成功,不用等待磁盤的寫入,性能很高,
傳統磁盤資料庫,分場景如下:
- 資料查詢類場景:從磁盤中索引資料,查詢并回傳回應;
- 資料寫入類場景:從將資料寫入磁盤,同時更新磁盤中的索引檔案,
以上可以看出:Redis是基于記憶體的資料庫,大多數操作在記憶體中完成,記憶體的IO效率比磁盤要高的多,因此,這是Redis性能高的一個原因,
Redis的優勢:單執行緒,IO多路復用的IO利用率高
Redis是單執行緒的,通常如果單執行緒處理效率不高,都開多執行緒處理,但是Redis這里為什么反到效率高了呢?
- 多執行緒存在執行緒競爭,且有鎖的問題,多執行緒代碼邏輯復雜,復雜的邏輯通常帶來一定的性能損耗;
- Redis雖然是單執行緒,但是它的“I/ O 多路 復 用( multiplexing)”模型的IO利用率很高,
Redis的“I/ O 多路 復 用”是采用的效率最高的epoll模式,單執行緒卻實作了多客戶端接入,以及高IO利用率,如下圖:
Redis的優勢:資料結構為高性能優化
資料結構的優化主要有以下兩點(篇幅有限,在這里就不展開了):
- Redis全程采用了Hash結構,因此存取效率非常高;
- 對于資料的存盤內容也進行了壓縮,節省了空間占用,也減少了io帶寬,
來源:悟空問答
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/2257.html
標籤:其他
上一篇:深度學習分類網路的發展歷史
下一篇:如何提高服務器并發處理能力
