1. 程式人生 > >(轉)Redis研究(一)—簡介

(轉)Redis研究(一)—簡介

創始人 存儲結構 隊列 cached tar 寫入 關系 退出 使用

http://blog.csdn.net/wtyvhreal/article/details/41855327

Redis是一個開源的高性能鍵值對數據庫。它通過提供多種鍵值數據類型來適應不同場景下的存儲需求,並借助許多高層級的接口使其可以勝任如緩存、隊列系統等不同的角色。

1.1歷史和發展

2008年,意大利一家創業公司Merzia的創始人Salvatore Sanfilippo為了避免MySQL的低性能,親自定做一個數據庫,並於2009年開發完成,這個就是redis。

短短幾年,用戶數據量猛增。國內如新浪微博、街旁和知乎等,國外如GitHub、暴雪等,都是Redis的用戶。

Redis的代碼托管在GitHub上,開發十分活躍。

1.2特性

1.2.1存儲結構

Redis是REmote DIctionary Server(遠程字典服務器)的縮寫,他以字典結構存儲數據,並允許其他應用通過TCP協議讀寫字典裏的內容,Redis字典中的鍵值除了可以是字符串外,還可以是其他數據類型,比如

字符串類型
散列類型

列表類型

集合類型

有序集合類型

這種字典形式的存儲結構與常見的mysql等關系數據庫的二維表形式的存儲結構有很大的差異。

(1)支持開發者可以將程序中的數據直接映射到Redis中

(2)對不同數據類型提供了非常方便的操作方式,如使用集合類型存儲文章標簽,Redis可以對標簽進行如交集、並集這樣的集合運算操作。

1.2.2內存存儲與持久化

Redis數據庫中的所有數據都存儲在內存中,由於內存的讀寫速度遠快於硬盤,性能明顯優勢,無時延情況下Redis可以在一秒內讀寫超過100000個鍵值。

將數據存儲在內存中也有問題,程序退出後內存中的數據會丟失,但是,Redis提供了對持久化的支持,即可以將內存中的數據異步寫入到硬盤中,同時不影響繼續提供服務。

1.2.3功能豐富

用作緩存、隊列系統等。

Redis可以為每個鍵設置生存時間(TTL),生存時間到期後鍵會自動被刪除,這一功能配合出色的性能讓Redis可以作為緩存系統來使用,成為了緩存系統Memcached的有力競爭者。

性能上:Redis是單線程模型,而Memcached支持多線程,多核服務器上後者性能好點。

但是Redis大多數情況下足夠優異都不會成為瓶頸,如果需要用到高級的數據類型或者持久化功能等,Redis會更好點。

作為緩存系統,Redis還可以限定數據占用的最大內存空間,在數據達到空間限制後可以按照一定的規則自動淘汰不需要的鍵。

除此之外,Redis的列表類型鍵可以實現隊列,並且支持阻塞式讀取,可以很容易實現一個高性能的優先隊列。同時在更高層面上,Redis還支持“發布 /訂閱”的消息模式,可以基於此構建聊天室等系統。

1.2.4簡單穩定

Redis提供一百多中命令,但是常用的就十幾種。

Redis提供了幾十種不同編程語言的客戶端庫,很好的封裝了Redis的命令,使得在程序中與Redis交互變得更容易。

Redis使用C語言開發,代碼量只有30000多行,易懂易修改,好維護。

Redis是開源的,穩定版本非常可靠。

(轉)Redis研究(一)—簡介