Redis高併發
Redis的高併發和快速原因
1.Redis基於內存,內存的讀寫速度非常快;
2.Redis是單線程的,爲上下文切換線程節省了大量時間;
3.Redis使用多路複用技術來處理併發連接。 非阻塞IO的內部實現使用epoll,以及由epoll +本身實現的簡單事件框架。 epoll中的讀取,寫入,關閉和連接都被轉換爲事件,然後使用epoll的多路複用功能從不浪費任何時間在io上。
Redis高併發總結
1.Redis是一個純內存數據庫,通常是一個簡單的存取操作, 線程佔用大量時間。 時間主要集中在IO上,因此讀取速度很快。
2.談到IO,Redis使用非阻塞IO,IO多路複用,使用單個線程輪詢描述符,將數據庫的開、關、讀、寫都轉換成了事件,從而減少了線程切換上下文的切換和競爭。
3.Redis使用單線程模型來確保每個操作的原子性,並且還減少了線程上下文切換和競爭。
4.此外,數據結構也有很大幫助。 Redis在整個過程中都使用哈希(hash)結構,該結構易於讀取。還有一些特殊的數據結構,對數據存儲進行了優化,例如壓縮表以及壓縮和存儲短數據。 比如,跳錶,使用有序數據結構來加快讀取速度。
5.還有一點,Redis使用其自己的事件分離器,這是相對有效的。 它在內部使用非阻塞執行方法,並且具有較大的吞吐量。