令仔學Redis(二)----單線程架構

來源:互聯網
上載者:User

    Redis是一種基於索引值對(key-value)的NoSQL資料庫,包含多種資料結構。官網上給出的數字是讀寫效能可以達到10萬/秒,可見速度之快。

    做個簡單的例子,同時開啟5個redis用戶端,同時執行下面的命令:

incr  number

    每一條命令的執行過程都是一樣的,發送命令,執行命令,返回結果。

    如果是在多線程的情況下,不作任何處理很可能就會造成資料最終結果出現問題。但是Redis不會,Redis的是單線程的處理方式,新的命令並不會立即被執行,而是統一的放到了隊列中,一條一條的執行.

    這樣的處理就不會出現並發的問題。那為什麼單線程的情況下還能這麼快。通常的來講,單線程的處理能力要比多線程的處理方式要差,舉個例子:10000斤的貨物,每一輛車的運載能力是每次1000斤,那麼如果只有一輛車的話需要10次才能完成,但是如果有10輛車呢,一次就能完成。
    那為什麼Redis使用單執行緒模式就會達到每秒萬層級的處理能力。歸結為以下三點:

1、純記憶體訪問,Redis把所有的資料都放到了記憶體中,記憶體的回應時間大約在100納秒,這也是Redis能有百萬層級處理能力的重要基礎。
2、還有一點就是Redis採用了epoll作為I/O多工技術實現。同時Redis自身的事件處理模型將epoll中的串連、讀寫、關閉都轉換為事件,不在網路I/O上消耗太多的時間。關於這一點會在後續的部落格中深入的講解
3、單線程減少了 線程切換和和竟態產生的消耗。

    但是單線程還有一個問題:就是對於每個命令的執行時間是有要求的,如果其中的某一個命令執行過長,會造成其他命令的阻塞,這對於Redis這種高效能的服務來說是致命的,所以Redis是面向快速執行情境的資料庫。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.