簡介
Redis是一個開源的、高性能的、基於鍵值對的緩衝與存儲系統,通過提供多種鍵值類型來適應不同場景下的存儲需求。同時Redis的諸多高級的功能使其可以勝任消息隊列、任務隊列等不同的角色。
特性
存儲結構
Redis是以字典的形式存儲數據,並允許其他應用可以通過TCP協議來訪問字典當中的內容。redis字典中的鍵值處理是字符串以外,還可以使其他的內容,到目前爲止,Redis支持的鍵值數據類型如下:
- 字符串類型
- 散列類型
- 列表類型
- 集合類型
- 有序集合類型
這種字典形式的存儲結構與常見的MySQl等關係型數據庫的二維表的存儲結構有很大的差異。
內存存儲與持久化
Redis將所有的數據存儲在內存當中。由於內存的讀寫速度明顯的優與硬盤,因此Redis在性能上比其他基於硬盤的數據庫有很大的優勢,在一臺普通的筆記本電腦上,Redis可以在一秒內讀寫超過10萬個鍵值。
將數據存儲在內存中也有問題,比如在程序退出後,內存中的數據全部丟失。不過Redis提供了對數據持久化的支持,即可以把內存中的數據異步寫入到內存中,同時不影響對外繼續提供服務。
功能豐富
Redis雖然作爲數據庫開發的,但是由於它提供了豐富的功能,很多人將Redis用作緩存、隊列系統等。
Redis可以爲每個鍵值對設置生存時間,生存時間到後會自動清除鍵值對,這一個特殊的功能可以把Redis用來做緩存系統,在緩存時間過期以後可以自定刪除鍵值對。
作爲緩存系統,Redis還可以設置最大內存佔用空間,當數據的存儲到達空間限制以後,可以按照一定的規則自定淘汰不需要的鍵值對。
除此之外,Redis還可以用來實現隊列,並且支持阻塞式的讀取,可以很容易的實現一個高性能的優先級隊列。