單線程架構redis
Redis使用了單線程架構和I/O多路複用模型來實現高性能的內存數據庫.算法
純內存訪問,Redis將全部數據放在內存中,內存的響應時長大約爲100納秒.數據庫
第二,非阻塞I/O,Redis使用epoll做爲I/O多路複用技術的實現,再加上Redis自身的事件處理模型將epoll中的鏈接、讀寫、關閉都轉換爲事件,不在網絡I/O上浪費過多的時間.網絡
關於非阻塞I/O epoll 能夠看這篇文章,對深刻了解redis很重要:數據結構
單線程能夠簡化數據結構和算法的實現,併發數據結構實現不但困難並且開發測試比較麻煩.架構
單線程避免了線程切換和競態產生的消耗,對於服務端開發來講,鎖和線程切換一般是性能殺手。併發
可是單線程會有一個問題:對於每一個命令的執行時間是有要求的。若是某個命令執行過長,會形成其餘命令的塞,對於Redis這種高性能的服務來講是致命的,因此Redis是面向快速執行場景的數據庫.數據結構和算法