Redis 是REmote DIctionary Server(遠程字典服務器)的縮寫,是一個開源的高性能鍵值對數據庫,它提供多種鍵值數據類型來適應不同場景下的存儲需求,並藉助許多高層級的接口能夠勝任如緩存、隊列系統等不同的角色。
一、存儲結構
Redis以字典結構存儲數據,允許其他應用通過TCP協議讀取字典中的內容。Redis字典中的鍵值可以是字符串,也可以是其他數據類型,目前Redis支持的鍵值數據類型如下:
(1)字符串(String)
(2)散列(Hash)
(3)列表類型(List)
(4)集合類型(Set)
(5)有序集合類型(Sorted Set)
二、內存存儲與持久化
Redis 數據庫中的所有數據都存儲在內存中,由於內存中的讀寫速度遠快於硬盤,因此Redis在性能上較其他基於硬盤存儲的數據庫有非常明顯的優勢。在一臺普通的筆記本電腦上,Redis可以在一秒內讀取超過十萬個鍵值。
針對將數據存儲在硬盤中存在程序退出後內存中的數據丟失等內存存儲問題,Redis提供了持久化的支持,可以將內存中的數據異步寫入到硬盤中,同時不影響繼續提供服務。
三、功能豐富
Redis雖然是作爲數據庫開發的,但由於它提供了豐富的功能,也逐漸被用作緩存、隊列系統使用等。
Redis 可以爲每個鍵設置生存時間,生存時間到期後鍵會自動刪除,這一功能配合出色的性能讓Redis可以作爲緩存系統來使用,Redis還可以限定數據佔用的最大內存空間,在數據達到空間限制後按照一定的規則自動淘汰不需要的鍵。
此外,Redis的列表類型鍵可以用來實現隊列,並且支持阻塞式讀取,可以很容易實現一個高性能的優先級隊列。Redis還支持“發佈/訂閱”的消息模式,可以基於此構建聊天室等系統。
四、簡單穩定
在Redis中使用命令來讀寫數據,Redis一共提供了100多個命令,常用的有十幾個,每個命令都很容易記憶。Redis還提供了幾十種不同的編程語言客戶端庫,這些客戶端庫很好的封裝了Redis命令,使得在程序中與Redis交互變得十分簡單。