(转)Redis研究(一)—简介
http://blog.csdn.net/wtyvhreal/article/details/41855327
??Redis是一個開源的高性能鍵值對數(shù)據(jù)庫。它通過提供多種鍵值數(shù)據(jù)類型來適應不同場景下的存儲需求,并借助許多高層級的接口使其可以勝任如緩存、隊列系統(tǒng)等不同的角色。
1.1歷史和發(fā)展
2008年,意大利一家創(chuàng)業(yè)公司Merzia的創(chuàng)始人Salvatore Sanfilippo為了避免MySQL的低性能,親自定做一個數(shù)據(jù)庫,并于2009年開發(fā)完成,這個就是redis。
短短幾年,用戶數(shù)據(jù)量猛增。國內(nèi)如新浪微博、街旁和知乎等,國外如GitHub、暴雪等,都是Redis的用戶。
Redis的代碼托管在GitHub上,開發(fā)十分活躍。
1.2特性
?
1.2.1存儲結(jié)構(gòu)
Redis是REmote DIctionary Server(遠程字典服務器)的縮寫,他以字典結(jié)構(gòu)存儲數(shù)據(jù),并允許其他應用通過TCP協(xié)議讀寫字典里的內(nèi)容,Redis字典中的鍵值除了可以是字符串外,還可以是其他數(shù)據(jù)類型,比如
???? 字符串類型
???? 散列類型
???? 列表類型
???? 集合類型
?????有序集合類型
這種字典形式的存儲結(jié)構(gòu)與常見的mysql等關系數(shù)據(jù)庫的二維表形式的存儲結(jié)構(gòu)有很大的差異。
(1)支持開發(fā)者可以將程序中的數(shù)據(jù)直接映射到Redis中
(2)對不同數(shù)據(jù)類型提供了非常方便的操作方式,如使用集合類型存儲文章標簽,Redis可以對標簽進行如交集、并集這樣的集合運算操作。
?
1.2.2內(nèi)存存儲與持久化
Redis數(shù)據(jù)庫中的所有數(shù)據(jù)都存儲在內(nèi)存中,由于內(nèi)存的讀寫速度遠快于硬盤,性能明顯優(yōu)勢,無時延情況下Redis可以在一秒內(nèi)讀寫超過100000個鍵值。
將數(shù)據(jù)存儲在內(nèi)存中也有問題,程序退出后內(nèi)存中的數(shù)據(jù)會丟失,但是,Redis提供了對持久化的支持,即可以將內(nèi)存中的數(shù)據(jù)異步寫入到硬盤中,同時不影響繼續(xù)提供服務。
?
1.2.3功能豐富
用作緩存、隊列系統(tǒng)等。
Redis可以為每個鍵設置生存時間(TTL),生存時間到期后鍵會自動被刪除,這一功能配合出色的性能讓Redis可以作為緩存系統(tǒng)來使用,成為了緩存系統(tǒng)Memcached的有力競爭者。
性能上:Redis是單線程模型,而Memcached支持多線程,多核服務器上后者性能好點。
但是Redis大多數(shù)情況下足夠優(yōu)異都不會成為瓶頸,如果需要用到高級的數(shù)據(jù)類型或者持久化功能等,Redis會更好點。
作為緩存系統(tǒng),Redis還可以限定數(shù)據(jù)占用的最大內(nèi)存空間,在數(shù)據(jù)達到空間限制后可以按照一定的規(guī)則自動淘汰不需要的鍵。
除此之外,Redis的列表類型鍵可以實現(xiàn)隊列,并且支持阻塞式讀取,可以很容易實現(xiàn)一個高性能的優(yōu)先隊列。同時在更高層面上,Redis還支持“發(fā)布 /訂閱”的消息模式,可以基于此構(gòu)建聊天室等系統(tǒng)。
?
1.2.4簡單穩(wěn)定
Redis提供一百多中命令,但是常用的就十幾種。
Redis提供了幾十種不同編程語言的客戶端庫,很好的封裝了Redis的命令,使得在程序中與Redis交互變得更容易。
Redis使用C語言開發(fā),代碼量只有30000多行,易懂易修改,好維護。
Redis是開源的,穩(wěn)定版本非常可靠。
總結(jié)
以上是生活随笔為你收集整理的(转)Redis研究(一)—简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql截取字符串与reverse函数
- 下一篇: 左侧固定 右侧自适应三种方法