申明
本文首發(fā)自架構(gòu)小站单芜,轉(zhuǎn)載請(qǐng)注明。
什么是Redis
Redis是開源(BSD許可)的KV內(nèi)存存儲(chǔ)服務(wù)器躁垛,可以用作數(shù)據(jù)庫(kù)剖毯、緩存、消息中間件等教馆。它支持多種數(shù)據(jù)結(jié)構(gòu)逊谋,包括字符串(strings)、散列(hashes)土铺、列表(lists)胶滋、集合(sets)、有序集合(sorted sets)悲敷、位圖(bitmaps)究恤、對(duì)象計(jì)數(shù)器(hyperloglogs)、地理空間索引(geospatial indexes)镀迂。Redis內(nèi)置了復(fù)制(replication)丁溅、Lua腳本唤蔗、LRU驅(qū)動(dòng)時(shí)間探遵、事務(wù)(transacations)和不同級(jí)別的磁盤持久化(persistence),并通過Redis哨兵(sentinel)和集群(cluster)保證高可用(hign availability)妓柜。
Redis應(yīng)用場(chǎng)景
數(shù)據(jù)庫(kù)
使用Redis代替?zhèn)鹘y(tǒng)的關(guān)系型數(shù)據(jù)庫(kù)入mysql箱季、mariadb直接作為數(shù)據(jù)最終倉(cāng)庫(kù),適合產(chǎn)品初期數(shù)據(jù)量少棍掐,或者長(zhǎng)期(如三年)數(shù)據(jù)量可控的場(chǎng)景藏雏。好處是讀寫速度杠杠的,再也不需要緩存啦作煌,同時(shí)也降低了系統(tǒng)復(fù)雜性掘殴,簡(jiǎn)單的總是最好的赚瘦。壞處是資源消耗(主要是內(nèi)存)太大,成本高奏寨,同時(shí)Redis的異步持久化可能帶來數(shù)據(jù)丟失的風(fēng)險(xiǎn)起意。
緩存
這是Redis最廣泛的應(yīng)用,多數(shù)場(chǎng)景下取代了老牌緩存Memcached病瞳。緩存的作用是加速數(shù)據(jù)訪問揽咕,Redis的數(shù)據(jù)放在內(nèi)存中,內(nèi)存IO比磁盤IO大概高1-2個(gè)數(shù)量級(jí)套菜,性能提升非城咨疲可觀。另外逗柴,由于緩存的引入蛹头,數(shù)據(jù)庫(kù)壓力大大降低,減少了高峰時(shí)期系統(tǒng)宕機(jī)的風(fēng)險(xiǎn)戏溺,而且作為緩存掘而,異步持久化可能帶來的數(shù)據(jù)丟失也可以接受。缺點(diǎn)是引入了額外的復(fù)雜性于购,Redis失效會(huì)造成數(shù)據(jù)庫(kù)擊穿袍睡,壓垮數(shù)據(jù)庫(kù)。
消息中間件
這應(yīng)該算是Redis的一種非主流應(yīng)用了肋僧,主要有兩種使用形式: (1) 基于Redis的Pub/Sub子系統(tǒng)斑胜,發(fā)布訂閱模式,每個(gè)頻道支持多個(gè)訂閱者 (2) 基于Redis列表(lists)數(shù)據(jù)結(jié)構(gòu)嫌吠,利用lpush發(fā)送消息止潘,rpop消費(fèi)消息,或者使用它們的阻塞版本辫诅,減少輪詢壓力 由于有專門的消息中間件凭戴,所以Redis的這種應(yīng)用并不多,Redis之父基于Redis實(shí)現(xiàn)了獨(dú)立的消息中間件Disque炕矮,有興趣的可以搜索github
Redis學(xué)習(xí)資源
1么夫、當(dāng)然是架構(gòu)小站啦,近期會(huì)著力更新Redis相關(guān)文章肤视,包括Redis基本數(shù)據(jù)類型档痪,協(xié)議、客戶端邢滑、歷史腐螟、運(yùn)維、高可用、擴(kuò)展以及源碼分析相關(guān)的文章乐纸,歡迎關(guān)注
2衬廷、Redis官網(wǎng):redis.io,這個(gè)不用多說汽绢,從Redis的安裝泵督、命令大全、實(shí)現(xiàn)原理到客戶端都有介紹庶喜,建議大家先通讀一遍小腊,大有裨益
3、Redis源碼久窟,學(xué)習(xí)Redis的源碼涉及了大量數(shù)據(jù)結(jié)構(gòu)秩冈,網(wǎng)絡(luò)服務(wù)器以及c語言模塊化和類面向?qū)ο蠡闹R(shí),對(duì)linux c程序設(shè)計(jì)有很大幫助斥扛。小件之后會(huì)更新數(shù)篇這方面的文章和大家一起學(xué)習(xí)