Redis學(xué)習(xí)筆記

Redis是什么欠啤?

  1. Redis使用C語言開發(fā)的一個(gè)開源的高性能鍵值對(key-vaiue)數(shù)據(jù)庫遣耍。
  2. 通常被認(rèn)為是一個(gè)數(shù)據(jù)結(jié)構(gòu)服務(wù)器,它通過提供多種鍵值數(shù)據(jù)類型來適應(yīng)不同場景下的存儲需求裹驰,到目前為止Redis支持的鍵值數(shù)據(jù)類型如下:string(字符串)井濒、list(鏈表)、set(集合)荠卷、zset(sorted set --有序集合)和hash(哈希類型)模庐。

Redis不是什么?

  1. 不是sql server僵朗、mySQL等關(guān)系型數(shù)據(jù)庫赖欣,主要原因是:
  • redis目前還只能作為小數(shù)據(jù)量存儲(全部數(shù)據(jù)能夠加載在內(nèi)存中)屑彻,海量數(shù)據(jù)存儲方面并不是redis所擅長的領(lǐng)域。
  • 設(shè)計(jì)顶吮、實(shí)現(xiàn)方法很不一樣.關(guān)系型數(shù)據(jù)庫通過表來存儲數(shù)據(jù)社牲,通過SQL來查詢數(shù)據(jù)。而Redis通上述五種數(shù)據(jù)結(jié)構(gòu)來存儲數(shù)據(jù)悴了,通過命令來查詢數(shù)據(jù)搏恤。
  1. 不是Memcached等緩存系統(tǒng),主要原因有以下幾點(diǎn):
  • 網(wǎng)絡(luò)IO模型方面:Memcached是多線程湃交,分為監(jiān)聽線程熟空、worker線程,引入鎖搞莺,帶來了性能損耗息罗。Redis使用單線程的IO復(fù)用模型,將速度優(yōu)勢發(fā)揮到最大才沧,也提供了較簡單的計(jì)算功能
  • 內(nèi)存管理方面:Memcached使用預(yù)分配的內(nèi)存池的方式迈喉,帶來一定程度的空間浪費(fèi) 并且在內(nèi)存仍然有很大空間時(shí),新的數(shù)據(jù)也可能會被剔除温圆,而Redis使用現(xiàn)場申請內(nèi)存的方式來存儲數(shù)據(jù)挨摸,不會剔除任何非臨時(shí)數(shù)據(jù) Redis更適合作為存儲而不是cache
  • 數(shù)據(jù)的一致性方面:Memcached提供了cas命令來保證.而Redis提供了事務(wù)的功能,可以保證一串 命令的原子性岁歉,中間不會被任何操作打斷
  • 存儲方式方面:Memcached只支持簡單的key-value存儲得运,不支持枚舉,不支持持久化和復(fù)制等功能
    一句話小結(jié)一下:Redis是一個(gè)高性能的key-value數(shù)據(jù)庫锅移。 redis的出現(xiàn)熔掺,很大程度補(bǔ)償了memcached這類key/value存儲的不足,在部分場合可以對關(guān)系數(shù)據(jù)庫起到很好的補(bǔ)充作用帆啃。

Redis特點(diǎn)

  1. 速度快:使用標(biāo)準(zhǔn)C寫瞬女,所有數(shù)據(jù)都在內(nèi)存中完成,Redis能讀的速度是110000次/s,寫的速度是81000次/s努潘。
  2. 持久化:對數(shù)據(jù)的更新采用Copy-on-write技術(shù)诽偷,可以異步地保存到磁盤上,主要有兩種策略疯坤,一是根據(jù)時(shí)間报慕,更新次數(shù)的快照(save 300 10 )二是基于語句追加方式(Append-only file,aof) 压怠。
  3. 自動操作:對不同數(shù)據(jù)類型的操作都是自動的眠冈,很安全。
  4. 快速的主--從復(fù)制,官方提供了一個(gè)數(shù)據(jù)蜗顽,Slave在21秒即完成了對Amazon網(wǎng)站10G key set的復(fù)制布卡。
  5. Sharding技術(shù): 很容易將數(shù)據(jù)分布到多個(gè)Redis實(shí)例中,數(shù)據(jù)庫的擴(kuò)展是個(gè)永恒的話題雇盖,在關(guān)系型數(shù)據(jù)庫中忿等,主要是以添加硬件、以分區(qū)為主要技術(shù)形式的縱向擴(kuò)展解決了很多的應(yīng)用場景崔挖,但隨著web2.0贸街、移動互聯(lián)網(wǎng)、云計(jì)算等應(yīng)用的興起狸相,這種擴(kuò)展模式已經(jīng)不太適合了薛匪,所以近年來,像采用主從配置脓鹃、數(shù)據(jù)庫復(fù)制形式的逸尖,Sharding這種技術(shù)把負(fù)載分布到多個(gè)特理節(jié)點(diǎn)上去的橫向擴(kuò)展方式用處越來越多。

Redis的缺點(diǎn)

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

Redis的應(yīng)用場景

? ? ? ?眾多語言都支持Redis瘸右,因?yàn)镽edis交換數(shù)據(jù)快冷溶,所以在服務(wù)器中常用來存儲一些需要頻繁調(diào)取的數(shù)據(jù),這樣可以大大節(jié)省系統(tǒng)直接讀取磁盤來獲得數(shù)據(jù)的I/O開銷尊浓,更重要的是可以極大提升速度。
? ? ? ?拿大型網(wǎng)站來舉個(gè)例子纯衍,比如a網(wǎng)站首頁一天有100萬人訪問栋齿,其中有一個(gè)板塊為推薦新聞。要是直接從數(shù)據(jù)庫查詢襟诸,那么一天就要多消耗100萬次數(shù)據(jù)庫請求瓦堵。上面已經(jīng)說過,Redis支持豐富的數(shù)據(jù)類型歌亲,所以這完全可以用Redis來完成菇用,將這種熱點(diǎn)數(shù)據(jù)存到Redis(內(nèi)存)中,要用的時(shí)候陷揪,直接從內(nèi)存取惋鸥,極大的提高了速度和節(jié)約了服務(wù)器的開銷。
? ? ? ?總之悍缠,Redis的應(yīng)用是非常廣泛的卦绣,而且極有價(jià)值,真是服務(wù)器中的一件利器飞蚓,所以從現(xiàn)在開始滤港,我們就來一步步學(xué)好它。

這里對Redis數(shù)據(jù)庫做下小結(jié):

  1. 提高了DB的可擴(kuò)展性趴拧,只需要將新加的數(shù)據(jù)放到新加的服務(wù)器上就可以了 溅漾。
  2. 提高了DB的可用性山叮,只影響到需要訪問的shard服務(wù)器上的數(shù)據(jù)的用戶 。
  3. 提高了DB的可維護(hù)性添履,對系統(tǒng)的升級和配置可以按shard一個(gè)個(gè)來搞屁倔,對服務(wù)產(chǎn)生的影響較小 。
  4. 小的數(shù)據(jù)庫存的查詢壓力小缝龄,查詢更快汰现,性能更好。

使用過程中的經(jīng)驗(yàn)和教訓(xùn):

  1. 要進(jìn)行Master-slave配置叔壤,出現(xiàn)服務(wù)故障時(shí)可以支持切換瞎饲。
  2. 在master側(cè)禁用數(shù)據(jù)持久化,只需在slave上配置數(shù)據(jù)持久化炼绘。
  3. 物理內(nèi)存+虛擬內(nèi)存不足嗅战,這個(gè)時(shí)候dump一直死著,時(shí)間久了機(jī)器掛掉俺亮。這個(gè)情況就是災(zāi)難驮捍!
  4. 當(dāng)Redis物理內(nèi)存使用超過內(nèi)存總?cè)萘康?/5時(shí)就會開始比較危險(xiǎn)了,就開始做swap,內(nèi)存碎片大
  5. 當(dāng)達(dá)到最大內(nèi)存時(shí)脚曾,會清空帶有過期時(shí)間的key东且,即使key未到過期時(shí)間.
  6. redis與DB同步寫的問題,先寫DB本讥,后寫redis珊泳,因?yàn)閷憙?nèi)存基本上沒有問題
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市拷沸,隨后出現(xiàn)的幾起案子色查,更是在濱河造成了極大的恐慌,老刑警劉巖撞芍,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件秧了,死亡現(xiàn)場離奇詭異,居然都是意外死亡序无,警方通過查閱死者的電腦和手機(jī)验毡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來帝嗡,“玉大人米罚,你說我怎么就攤上這事≌商剑” “怎么了录择?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我隘竭,道長塘秦,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任动看,我火速辦了婚禮尊剔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘菱皆。我一直安慰自己须误,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布仇轻。 她就那樣靜靜地躺著京痢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪篷店。 梳的紋絲不亂的頭發(fā)上祭椰,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機(jī)與錄音疲陕,去河邊找鬼方淤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蹄殃,可吹牛的內(nèi)容都是我干的携茂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼诅岩,長吁一口氣:“原來是場噩夢啊……” “哼邑蒋!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起按厘,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钱慢,沒想到半個(gè)月后逮京,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡束莫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年懒棉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片览绿。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡策严,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出饿敲,到底是詐尸還是另有隱情妻导,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站倔韭,受9級特大地震影響术浪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寿酌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一胰苏、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧醇疼,春花似錦硕并、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辰如,卻和暖如春普监,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背琉兜。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工凯正, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人豌蟋。 一個(gè)月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓廊散,卻偏偏與公主長得像,于是被迫代替她去往敵國和親梧疲。 傳聞我的和親對象是個(gè)殘疾皇子允睹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載地址:http://gnucto.blog.51cto.com/3391516/998509 Redis與Me...
    Ddaidai閱讀 21,442評論 0 82
  • Redis簡介 Redis 是完全開源免費(fèi)的,遵守BSD協(xié)議幌氮,是一個(gè)高性能的key-value數(shù)據(jù)庫缭受。Redis ...
    drfung閱讀 969評論 0 10
  • 關(guān)于Redis的一些分享NoSQL 3v+3高 3v: volume海量 variety多樣 velocity實(shí)...
    Mason啊閱讀 320評論 0 2
  • 此時(shí)此刻的你在干些什么呢宇智?或許在為了完成上司布置的任務(wù)廢寢忘食蔓搞,挑燈夜戰(zhàn)?或是獨(dú)自一人在街上徘徊随橘,淚水劃過喂分,依...
    江小星的idea7閱讀 567評論 0 1
  • 每次去到超市,要是不經(jīng)意間走到了賣女性用品的地方机蔗,比如內(nèi)衣蒲祈,又比如衛(wèi)生巾甘萧,著是讓人尷尬。如果需要在附近買些別的東西...
    容書仁閱讀 397評論 8 6