redis 使用哈希表存儲數據,支持字符串、列表、哈希表、集合和有序集合等數據結構。redis 通過快照 (rdb) 和追加只寫 (aof) 機制持久化數據。redis 使用主從復制來提高數據可用性。redis 使用單線程事件循環處理連接和命令,保證數據原子性和一致性。redis 為鍵設置過期時間,并使用 lazy 刪除機制刪除過期鍵。
Redis 底層實現
Redis 是如何存儲數據的?
Redis 使用一種稱為哈希表的內存數據結構來存儲數據。哈希表是一種將鍵映射到值的集合。通過散列函數生成鍵的值,并將其存儲在哈希表的槽中。
Redis 的數據結構有哪些?
Redis 支持多種數據結構,包括:
字符串:存儲文本或二進制數據
列表:存儲有序元素的集合
哈希表:存儲鍵值對
集合:存儲無序唯一的元素
有序集合:存儲唯一元素并按分數值排序
Redis 如何處理持久性?
Redis 提供持久性特性,允許將數據保存到磁盤中。有兩種持久化機制:
快照 (RDB):將 Redis 數據庫的狀態保存到單個文件中。
追加只寫 (AOF):將對數據庫的寫入操作記錄到日志文件中。
Redis 如何處理復制?
Redis 支持主從復制,其中一個主服務器將數據復制到多個從服務器。當主服務器發生故障時,其中一個從服務器可以被提升為主服務器。
Redis 如何處理并發訪問?
Redis 使用單線程事件循環來處理所有連接和命令。服務器一次處理一個命令,這保證了數據的原子性和一致性。
Redis 如何處理過期鍵?
Redis 為每個鍵設置了過期時間。當鍵過期時,其相關數據將自動刪除。服務器使用 lazy 刪除機制,這意味著它不會立即刪除過期鍵,而是將其標記為刪除,并在適當的時間進行實際刪除。