Redis的高並發能力主要與內存存儲、高效的I/O操作、快速的數據結構、原子操作概念直接相關。
1、內存存儲
Redis的所有數據都存儲在內存中,這樣可以避免磁盤I/O操作的延遲。內存訪問速度要比磁盤快很多,因此Redis可以處理大量的並發請求。
2、高效的I/O操作
Redis使用了單線程事件驅動的I/O模型,可以高效地處理並發連接和請求。這種模型避免了多線程編程中的線程切換和鎖競爭等開銷。
3、快速的數據結構
Redis使用壹種稱為字典(hash)的數據結構來存儲數據。字典在內存中實現了壹種非常高效的數據結構,可以快速地執行查找、插入和刪除操作。
4、原子操作
Redis的所有操作都是原子性的,這意味著在執行操作時,不會受到其他操作的幹擾。這有助於確保數據的壹致性和並發安全性。
Redis的存儲
1、redis使用了兩種文件格式:全量數據和增量請求。
2、全量數據格式是把內存中的數據寫入磁盤,便於下次讀取文件進行加載。
3、增量請求文件則是把內存中的數據序列化為操作請求,用於讀取文件進行replay得到數據,序列化的操作包括SET、RPUSH、SADD、ZADD。
4、redis的存儲分為內存存儲、磁盤存儲和log文件三部分,配置文件中有三個參數對其進行配置。
5、save seconds updates,save配置,指出在多長時間內,有多少次更新操作,就將數據同步到數據文件。這個可以多個條件配合,比如默認配置文件中的設置,就設置了三個條件。