Redis常見知識點

原文地址
1.什么是redis?
Redis 是一個基于內(nèi)存的高性能key-value數(shù)據(jù)庫冗懦。

2.Reids的特點
Redis本質(zhì)上是一個Key-Value類型的內(nèi)存數(shù)據(jù)庫,很像memcached犀被,整個數(shù)據(jù)庫統(tǒng)統(tǒng)加載在內(nèi)存當中進行操作绍填,定期通過異步操作把數(shù)據(jù)庫數(shù)據(jù)flush到硬盤上進行保存。因為是純內(nèi)存操作稀余,Redis的性能非常出色邦邦,每秒可以處理超過 10萬次讀寫操作安吁,是已知性能最快的Key-Value DB。

Redis的出色之處不僅僅是性能燃辖,Redis最大的魅力是支持保存多種數(shù)據(jù)結(jié)構(gòu)鬼店,此外單個value的最大限制是1GB,不像 memcached只能保存1MB的數(shù)據(jù)黔龟,因此Redis可以用來實現(xiàn)很多有用的功能妇智,比方說用他的List來做FIFO雙向鏈表,實現(xiàn)一個輕量級的高性 能消息隊列服務(wù)氏身,用他的Set可以做高性能的tag系統(tǒng)等等巍棱。另外Redis也可以對存入的Key-Value設(shè)置expire時間,因此也可以被當作一 個功能加強版的memcached來用蛋欣。

Redis的主要缺點是數(shù)據(jù)庫容量受到物理內(nèi)存的限制航徙,不能用作海量數(shù)據(jù)的高性能讀寫,因此Redis適合的場景主要局限在較小數(shù)據(jù)量的高性能操作和運算上陷虎。

3.Redis支持的數(shù)據(jù)類型
Redis通過Key-Value的單值不同類型來區(qū)分, 以下是支持的類型:
Strings
Lists
Sets 求交集到踏、并集
Sorted Set
hashes

4.為什么redis需要把所有數(shù)據(jù)放到內(nèi)存中?
Redis為了達到最快的讀寫速度將數(shù)據(jù)都讀到內(nèi)存中尚猿,并通過異步的方式將數(shù)據(jù)寫入磁盤窝稿。所以redis具有快速和數(shù)據(jù)持久化的特征。如果不將數(shù)據(jù)放在內(nèi)存中凿掂,磁盤I/O速度為嚴重影響redis的性能伴榔。在內(nèi)存越來越便宜的今天,redis將會越來越受歡迎庄萎。
如果設(shè)置了最大使用的內(nèi)存踪少,則數(shù)據(jù)已有記錄數(shù)達到內(nèi)存限值后不能繼續(xù)插入新值。

5.Redis是單進程單線程的
redis利用隊列技術(shù)將并發(fā)訪問變?yōu)榇性L問糠涛,消除了傳統(tǒng)數(shù)據(jù)庫串行控制的開銷秉馏。

6.虛擬內(nèi)存
當你的key很小而value很大時,使用VM的效果會比較好.因為這樣節(jié)約的內(nèi)存比較大.
當你的key不小時,可以考慮使用一些非常方法將很大的key變成很大的value,比如你可以考慮將key,value組合成一個新的value.

vm-max-threads這個參數(shù),可以設(shè)置訪問swap文件的線程數(shù),設(shè)置最好不要超過機器的核數(shù),如果設(shè)置為0,那么所有對swap文件的操作都是串行的.可能會造成比較長時間的延遲,但是對數(shù)據(jù)完整性有很好的保證.

自己測試的時候發(fā)現(xiàn)用虛擬內(nèi)存性能也不錯。如果數(shù)據(jù)量很大脱羡,可以考慮分布式或者其他數(shù)據(jù)庫

7.分布式
redis支持主從的模式萝究。原則:Master會將數(shù)據(jù)同步到slave,而slave不會將數(shù)據(jù)同步到master锉罐。Slave啟動時會連接master來同步數(shù)據(jù)帆竹。
這是一個典型的分布式讀寫分離模型。我們可以利用master來插入數(shù)據(jù)脓规,slave提供檢索服務(wù)栽连。這樣可以有效減少單個機器的并發(fā)訪問數(shù)量。

8.讀寫分離模型
通過增加Slave DB的數(shù)量侨舆,讀的性能可以線性增長秒紧。為了避免Master DB的單點故障,集群一般都會采用兩臺Master DB做雙機熱備挨下,所以整個集群的讀和寫的可用性都非常高熔恢。
讀寫分離架構(gòu)的缺陷在于,不管是Master還是Slave臭笆,每個節(jié)點都必須保存完整的數(shù)據(jù)叙淌,如果在數(shù)據(jù)量很大的情況下,集群的擴展能力還是受限于單個節(jié)點的存儲能力愁铺,而且對于Write-intensive類型的應(yīng)用鹰霍,讀寫分離架構(gòu)并不適合。

9.數(shù)據(jù)分片模型
為了解決讀寫分離模型的缺陷茵乱,可以將數(shù)據(jù)分片模型應(yīng)用進來茂洒。
可以將每個節(jié)點看成都是獨立的master,然后通過業(yè)務(wù)實現(xiàn)數(shù)據(jù)分片瓶竭。
結(jié)合上面兩種模型督勺,可以將每個master設(shè)計成由一個master和多個slave組成的模型。

10.Redis的回收策略

  • volatile-lru:從已設(shè)置過期時間的數(shù)據(jù)集(server.db[i].expires)中挑選最近最少使用的數(shù)據(jù)淘汰
  • volatile-ttl:從已設(shè)置過期時間的數(shù)據(jù)集(server.db[i].expires)中挑選將要過期的數(shù)據(jù)淘汰
  • volatile-random:從已設(shè)置過期時間的數(shù)據(jù)集(server.db[i].expires)中任意選擇數(shù)據(jù)淘汰
  • allkeys-lru:從數(shù)據(jù)集(server.db[i].dict)中挑選最近最少使用的數(shù)據(jù)淘汰
  • allkeys-random:從數(shù)據(jù)集(server.db[i].dict)中任意選擇數(shù)據(jù)淘汰
  • no-enviction(驅(qū)逐):禁止驅(qū)逐數(shù)據(jù)在验。

11.使用Redis有哪些好處玷氏?
1.速度快,因為數(shù)據(jù)存在內(nèi)存中腋舌,類似于HashMap盏触,HashMap的優(yōu)勢就是查找和操作的時間復(fù)雜度都是O(1)。
2.支持豐富數(shù)據(jù)類型块饺,支持string赞辩,list,set授艰,sorted set辨嗽,hash。
3.支持事務(wù)淮腾,操作都是原子性糟需,所謂的原子性就是對數(shù)據(jù)的更改要么全部執(zhí)行屉佳,要么全部不執(zhí)行。
4.豐富的特性:可用于緩存洲押,消息武花,按key設(shè)置過期時間,過期后將會自動刪除杈帐。

12.Redis持久化方式
由于Redis的數(shù)據(jù)都存放在內(nèi)存中体箕,如果沒有配置持久化,redis重啟后數(shù)據(jù)就全丟失了挑童,于是需要開啟Redis的持久化功能累铅,將數(shù)據(jù)保存到磁盤上,當redis重啟后站叼,可以從磁盤中恢復(fù)數(shù)據(jù)娃兽。redis提供兩種方式進行持久化,一種是RDB持久化(原理是將Reids在內(nèi)存中的數(shù)據(jù)庫記錄定時dump到磁盤上的RDB持久化),大年,另外一種是AOF(append only file)持久化(原理是將Reids的操作日志以追加的方式寫入文件)

  • RDB持久化是指在指定的時間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫入磁盤换薄,實際操作過程是fork一個子進程,先將數(shù)據(jù)集寫入臨時文件翔试,寫入成功后轻要,再替換之前的文件,用二進制壓縮存儲垦缅。
  • AOF持久化以日志的形式記錄服務(wù)器所處理的每一個寫冲泥、刪除操作,查詢操作不會記錄壁涎,以文本的方式記錄凡恍,可以打開文件看到詳細的操作記錄。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怔球,一起剝皮案震驚了整個濱河市嚼酝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌竟坛,老刑警劉巖闽巩,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異担汤,居然都是意外死亡涎跨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門崭歧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隅很,“玉大人,你說我怎么就攤上這事率碾∈逵” “怎么了屋彪?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長绒尊。 經(jīng)常有香客問我撼班,道長,這世上最難降的妖魔是什么垒酬? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮件炉,結(jié)果婚禮上勘究,老公的妹妹穿的比我還像新娘。我一直安慰自己斟冕,他們只是感情好口糕,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著磕蛇,像睡著了一般景描。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上秀撇,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天超棺,我揣著相機與錄音,去河邊找鬼呵燕。 笑死棠绘,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的再扭。 我是一名探鬼主播氧苍,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼泛范!你這毒婦竟也來了让虐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤罢荡,失蹤者是張志新(化名)和其女友劉穎赡突,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體柠傍,經(jīng)...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡麸俘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了惧笛。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片从媚。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖患整,靈堂內(nèi)的尸體忽然破棺而出拜效,到底是詐尸還是另有隱情喷众,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布紧憾,位于F島的核電站到千,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏赴穗。R本人自食惡果不足惜憔四,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望般眉。 院中可真熱鬧了赵,春花似錦、人聲如沸甸赃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽埠对。三九已至络断,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間项玛,已是汗流浹背貌笨。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留稍计,地道東北人躁绸。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像臣嚣,于是被迫代替她去往敵國和親净刮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354