內(nèi)容概要
Redis是什么
- Redis -
REmote DIctionary Server
- Redis是一個使用
ANSI C
語言編寫的開源數(shù)據(jù)庫 - 高性能的
key-value
數(shù)據(jù)庫 - 內(nèi)存數(shù)據(jù)庫,支持數(shù)據(jù)持久化
- 提供了多種編程語言的客戶端
- 從2010年3月15日起堵第,Redis的開發(fā)工作由
VMware
主持 - 從2013年5月開始控汉,Redis的開發(fā)由
Pivotal
贊助
官網(wǎng):https://redis.io/
中文官網(wǎng):http://www.redis.cn/
Redis的前世今生
redis的作者,叫Salvatore Sanfilippo
锨咙,來自意大利的西西里島,2008年這個作者在做一個網(wǎng)站實時統(tǒng)計系統(tǒng)LLOOGG,就是用來統(tǒng)計用戶訪問網(wǎng)站的記錄钩骇,最開始采用的是MySQL來實現(xiàn),可能是由于MySQL的特性不太適用于這個場景铝量,或者是當時機器不太好倘屹,導致他未能實現(xiàn)這個功能,所以他就開發(fā)了redis第一個版本來實現(xiàn)這個功能慢叨。
Redis的作者并不滿足只將redis用于這一款產(chǎn)品纽匙,而是希望有更多的人來使用它,于是同一年將Redis開源發(fā)布拍谐,短短幾年時間Redis就在國內(nèi)外擁有了龐大的用戶群體烛缔。直到今天馏段,Redis仍然是一個非常優(yōu)秀的存儲服務系統(tǒng)。
誰在使用Redis
假如說我們現(xiàn)在問Redis作者一個問題践瓷,有哪些公司在使用Redis院喜,我想他可能會開玩笑的說,Who is not using Redis当窗?言下之意難道還有公司不在使用Redis嗎够坐。當然這也只是一句玩笑,但是從側(cè)面證明Redis的使用確實是非常廣泛的崖面。來看一下國內(nèi)外有哪些大公司在使用Redis元咙,如圖所示
Redis特性
在下一小節(jié)我們會對Redis特性進行詳細說明
Redis數(shù)據(jù)結構
如圖是Redis內(nèi)部使用的一個redisObject
對象的結構,redis使用redisObject
表示所有的key和value巫员。
Redis數(shù)據(jù)類型有:string
(字符串)庶香、list
(鏈表)、set
(無序集合)简识、sorted set
(有序集合)赶掖、hash
(散列類型)
Redis典型使用場景
緩存系統(tǒng)
來看一個典型的場景,一個用戶訪問一個App Server
七扰,首先App Server
會從cache
中去獲取奢赂,如果cache
中有需要的數(shù)據(jù),就直接返回給App Server
颈走,然后返回給用戶膳灶。
如果cache
中沒有會從數(shù)據(jù)源Storage
中去獲取真實數(shù)據(jù),為了下次方便在cache
中獲取相同的數(shù)據(jù)立由,我們會將Storage
中的數(shù)據(jù)存到cache
中轧钓,然后最終將Storage
中的數(shù)據(jù)返回給用戶。
實際當中cache可以是很多種類型锐膜,例如本地緩存毕箍、memcache等,這里我們就使用Redis來表示道盏。
計數(shù)器
如圖像微博的轉(zhuǎn)發(fā)數(shù)和評論數(shù)而柑,都是可以使用Redis來完成這樣一個功能,redis有提供incr
這樣的命令可以在單線程下非常高效的進行計數(shù)捞奕,而且不會有計數(shù)錯誤的問題牺堰。所以像很多視頻網(wǎng)站都會使用redis來對視頻的播放數(shù)來進行一個記錄,這些計數(shù)對產(chǎn)品決策以及上層的決策是非常有幫助的颅围。
消息隊列系統(tǒng)
消息隊列系統(tǒng)在很多的公司已經(jīng)成為項目中開發(fā)的一個標配伟葫,成熟的消息隊列系統(tǒng)有很多,例如activemq院促、rabbitmq等筏养。
而Redis也提供了像發(fā)布訂閱斧抱、阻塞隊列來實現(xiàn)類似的模型。在實現(xiàn)一些對消息隊列功能不是很強要求的一些系統(tǒng)時渐溶,可以使用Redis來實現(xiàn)辉浦。
排行榜
Redis也可以實現(xiàn)類似排行榜的功能,Redis提供了一個有序集合對完成排行榜這樣的功能是非常有幫助的茎辐。
社交網(wǎng)絡
可以說Redis和社交網(wǎng)絡是天然吻合的宪郊,很多媒體社交功能都可以使用redis實現(xiàn),例如粉絲數(shù)拖陆、關注數(shù)弛槐、共同關注、時間軸列表等依啰。
實時系統(tǒng)
最典型的如布隆過濾器乎串,可以使用Redis提供的位圖功能來實現(xiàn)布隆過濾器這樣的功能,在對于一些垃圾郵件過濾速警、實時系統(tǒng)的處理會非常有幫助叹誉。