通常來講,單執行緒處理能力要比多執行緒差,但是redis為什麼就快了,這主要得益於以下幾個原因:
1.純記憶體訪問,redis將所有資料放在記憶體中,記憶體的響應時長大約為100納秒,這是redis達到每秒萬級別的訪問的重要基礎。
2.非阻塞IO,redis使用epoll作為I/O多路複用技術的實現,再加上redis自身的事件處理模型將epoll中的連線、讀寫、關閉都轉為事件,不在網路I/O上浪費過多的時間。
3.單執行緒避免了執行緒切換和競態產生的消耗。
單執行緒的好處:
1.簡化資料結構和演算法的實現。
2.避免了執行緒切換和競態產生的消耗,對於服務端來說,鎖和執行緒切換通常是效能殺手。
單執行緒的問題:對於每個命令的執行時間是有要求的。如果某個命令執行過程,會造成其他命令的阻塞,對於redis這種高效能的服務來說是致命的,所以redis是面向快速執行場景的資料庫。
通常來講,單執行緒處理能力要比多執行緒差,但是redis為什麼就快了,這主要得益於以下幾個原因:
1.純記憶體訪問,redis將所有資料放在記憶體中,記憶體的響應時長大約為100納秒,這是redis達到每秒萬級別的訪問的重要基礎。
2.非阻塞IO,redis使用epoll作為I/O多路複用技術的實現,再加上redis自身的事件處理模型將epoll中的連線、讀寫、關閉都轉為事件,不在網路I/O上浪費過多的時間。
3.單執行緒避免了執行緒切換和競態產生的消耗。
單執行緒的好處:
1.簡化資料結構和演算法的實現。
2.避免了執行緒切換和競態產生的消耗,對於服務端來說,鎖和執行緒切換通常是效能殺手。
單執行緒的問題:對於每個命令的執行時間是有要求的。如果某個命令執行過程,會造成其他命令的阻塞,對於redis這種高效能的服務來說是致命的,所以redis是面向快速執行場景的資料庫。