1、基本概念:一塊2.gghz的cpu,一秒可以處理2.6*10^9 條命令,一條指令就是0.38ns,切換一次執行緒耗時2000ns,切換執行緒開銷是大的。
2、那為什麼有多執行緒:硬碟訪問時間遠遠大於記憶體。當cpu在等待硬碟的時候,它可以先去做別的事情,比如等硬碟要乙個小時,儲存現場需要十五分鐘,
那就還有剩下的四十五分鐘可以利用,不用cpu一直在等硬碟。
3、redis特性:redis是基於記憶體的,也就是說它不和硬碟打交道,那cpu也就不用花很多時間等硬碟,只要記憶體資料訪問好就好了
(猜測:記憶體訪問時間比切換執行緒少或者差不多),這時候如果切換了執行緒那記憶體讀出來的資料還得等cpu,所以不要切換執行緒了,直接單執行緒。
1、切換一次執行緒的時間可以用來執行多條cpu指令,然後讀取記憶體的時間又遠遠小於讀取硬碟的時間
2、以往的程式需要讀取硬碟,所以在等待硬碟的時候可以用來執行其他執行緒,反正等著也是等著,不如利用這段時間多做點事情
3、redis是基於記憶體的,這裡再引入快取的概念 (快取的工作原理
快取的工作原理是當cpu要讀取乙個資料時,首先從快取中查詢,如果找到就立即讀取並送給cpu處理;如果沒有找到,就用相對慢的速度從記憶體中讀取並送給cpu處理,
同時把這個資料所在的資料塊調入快取中,可以使得以後對整塊資料的讀取都從快取中進行,不必再呼叫記憶體。
正是這樣的讀取機制使cpu讀取快取的命中率非常高(大多數cpu可達90%左右),也就是說cpu下一次要讀取的資料90%都在快取中,
只有大約10%需要從記憶體讀取。這大大節省了cpu直接讀取記憶體的時間,也使cpu讀取資料時基本無需等待。總的來說,cpu讀取資料的順序是先快取後記憶體。)
換句話說就是面向快取/記憶體的話需要查詢資料很多時候不用等,這時如果再切換執行緒的話就浪費時間了。
redis為什麼是單執行緒而且速度快?
redis支援的5種資料型別 1.string 字串 2.list 陣列或列表 3.set 集合 4.hash 雜湊或字典 5.zset 有序集合 資料庫的工作模式按儲存方式可分為 硬碟資料庫和記憶體資料庫。redis 將資料儲存在記憶體裡面,讀寫資料的時候都不會受到硬碟 i o 速度的限制,所以速...
Redis 為什麼速度快
1 完全基於記憶體,絕大部分請求是純粹的記憶體操作,非常快速。資料存在記憶體中,類似於hashmap,hashmap的優勢就是查詢和操作的時間複雜度都是o 1 2 資料結構簡單,對資料操作也簡單,redis中的資料結構是專門進行設計的 3 採用單執行緒,避免了不必要的上下文切換和競爭條件,也不存在多...
redis是單執行緒的為什麼速度這麼快?
redis是基於記憶體的也可以持久化的日誌型 key value資料庫,是單執行緒的。由於redis是基於記憶體進行讀寫的,所以他的io瓶頸並不在磁碟上 記憶體的速度非常快。redis是key value型資料庫,相比於關係型資料庫效率更高,時間複雜度為o 1 redis的使用場景為連線非常多但每個...