爲何單線程的Redis這麼快

  Redis是一中由C語言編寫,支持多種語言的NoSQL數據庫,因爲其優越的性能和快速的讀寫而被普遍使用,那它爲何這麼快呢,主要有如下幾個緣由:redis

  1. 純內存操做

  Redis的數據所有存儲在內存裏,查找與操做的時間複雜度都爲O(1),因此速度比較快。數據庫

  1. 單線程

  Redis速度快的另外一個緣由就是其讀取寫入都是單線程操做,減小了線程切換而形成的CPU開銷。網絡

  1. IO多路複用模型

  這裏「多路」指的是多個網絡鏈接,「複用」指的是複用同一個線程。內部採用epoll代理,epoll會同時監察多個流的IO事件,在空閒時,當前線程進入阻塞,若是有IO事件時,線程會被喚醒,而且epoll會通知線程是哪一個流發生了IO事件,而後按照順序處理,減小了網絡IO的時間消耗,避免了大量的無用操做。性能

最後附上redis運行時原理圖。 線程

相關文章
相關標籤/搜索