Redis是一中由C語言編寫,支持多種語言的NoSQL數據庫,因爲其優越的性能和快速的讀寫而被普遍使用,那它爲何這麼快呢,主要有如下幾個緣由:redis
- 純內存操做
Redis的數據所有存儲在內存裏,查找與操做的時間複雜度都爲O(1),因此速度比較快。數據庫
- 單線程
Redis速度快的另外一個緣由就是其讀取寫入都是單線程操做,減小了線程切換而形成的CPU開銷。網絡
- IO多路複用模型
這裏「多路」指的是多個網絡鏈接,「複用」指的是複用同一個線程。內部採用epoll代理,epoll會同時監察多個流的IO事件,在空閒時,當前線程進入阻塞,若是有IO事件時,線程會被喚醒,而且epoll會通知線程是哪一個流發生了IO事件,而後按照順序處理,減小了網絡IO的時間消耗,避免了大量的無用操做。性能
最後附上redis運行時原理圖。 線程