redis常見應(yīng)用場(chǎng)景

redis應(yīng)用場(chǎng)景總結(jié)redis平時(shí)我們用到的地方蠻多的衫生,下面就了解的應(yīng)用場(chǎng)景做個(gè)總結(jié):

1土浸、熱點(diǎn)數(shù)據(jù)的緩存

由于redis訪問速度塊、支持的數(shù)據(jù)類型比較豐富泪酱,所以redis很適合用來存儲(chǔ)熱點(diǎn)數(shù)據(jù)墓阀,另外結(jié)合expire,我們可以設(shè)置過期時(shí)間然后再進(jìn)行緩存更新操作经伙,這個(gè)功能最為常見勿锅,我們幾乎所有的項(xiàng)目都有所運(yùn)用溢十。

2、限時(shí)業(yè)務(wù)的運(yùn)用

redis中可以使用expire命令設(shè)置一個(gè)鍵的生存時(shí)間荒典,到時(shí)間后redis會(huì)刪除它吞鸭。利用這一特性可以運(yùn)用在限時(shí)的優(yōu)惠活動(dòng)信息瞒大、手機(jī)驗(yàn)證碼等業(yè)務(wù)場(chǎng)景。

3盯滚、計(jì)數(shù)器相關(guān)問題

redis由于incrby命令可以實(shí)現(xiàn)原子性的遞增酗电,所以可以運(yùn)用于高并發(fā)的秒殺活動(dòng)、分布式序列號(hào)的生成背率、具體業(yè)務(wù)還體現(xiàn)在比如限制一個(gè)手機(jī)號(hào)發(fā)多少條短信嫩与、一個(gè)接口一分鐘限制多少請(qǐng)求、一個(gè)接口一天限制調(diào)用多少次等等饵筑。

4根资、排行榜相關(guān)問題

關(guān)系型數(shù)據(jù)庫在排行榜方面查詢速度普遍偏慢架专,所以可以借助redis的SortedSet進(jìn)行熱點(diǎn)數(shù)據(jù)的排序部脚。

在奶茶活動(dòng)中睛低,我們需要展示各個(gè)部門的點(diǎn)贊排行榜, 所以我針對(duì)每個(gè)部門做了一個(gè)SortedSet,然后以用戶的openid作為上面的username,以用戶的點(diǎn)贊數(shù)作為上面的score, 然后針對(duì)每個(gè)用戶做一個(gè)hash,通過zrangebyscore就可以按照點(diǎn)贊數(shù)獲取排行榜钱雷,然后再根據(jù)username獲取用戶的hash信息罩抗,這個(gè)當(dāng)時(shí)在實(shí)際運(yùn)用中性能體驗(yàn)也蠻不錯(cuò)的灿椅。

? 5、分布式鎖

這個(gè)主要利用redis的setnx命令進(jìn)行操刀,setnx:"set if not exists"就是如果不存在則成功設(shè)置緩存同時(shí)返回1婴洼,否則返回0?,這個(gè)特性在俞你奔遠(yuǎn)方的后臺(tái)中有所運(yùn)用欢唾,因?yàn)槲覀兎?wù)器是集群的礁遣,定時(shí)任務(wù)可能在兩臺(tái)機(jī)器上都會(huì)運(yùn)行,所以在定時(shí)任務(wù)中首先 通過setnx設(shè)置一個(gè)lock祟霍,如果成功設(shè)置則執(zhí)行沸呐,如果沒有成功設(shè)置续语,則表明該定時(shí)任務(wù)已執(zhí)行疮茄。 當(dāng)然結(jié)合具體業(yè)務(wù),我們可以給這個(gè)lock加一個(gè)過期時(shí)間力试,比如說30分鐘執(zhí)行一次的定時(shí)任務(wù)畸裳,那么這個(gè)過期時(shí)間設(shè)置為小于30分鐘的一個(gè)時(shí)間 就可以,這個(gè)與定時(shí)任務(wù)的周期以及定時(shí)任務(wù)執(zhí)行消耗時(shí)間相關(guān)帅容。

當(dāng)然我們可以將這個(gè)特性運(yùn)用于其他需要分布式鎖的場(chǎng)景中伍伤,結(jié)合過期時(shí)間主要是防止死鎖的出現(xiàn)扰魂。

6、延時(shí)操作

這個(gè)目前我做過相關(guān)測(cè)試姐直,但是還沒有運(yùn)用到我們的實(shí)際項(xiàng)目中声畏,下面我舉個(gè)該特性的應(yīng)用場(chǎng)景。 比如在訂單生產(chǎn)后我們占用了庫存砰识,10分鐘后去檢驗(yàn)用戶是夠真正購買辫狼,如果沒有購買將該單據(jù)設(shè)置無效辛润,同時(shí)還原庫存。 由于redis自2.8.0之后版本提供Keyspace Notifications功能真椿,允許客戶訂閱Pub/Sub頻道乎澄,以便以某種方式接收影響Redis數(shù)據(jù)集的事件。 所以我們對(duì)于上面的需求就可以用以下解決方案解恰,我們?cè)谟唵紊a(chǎn)時(shí)锋八,設(shè)置一個(gè)key挟纱,同時(shí)設(shè)置10分鐘后過期腐宋, 我們?cè)诤笈_(tái)實(shí)現(xiàn)一個(gè)監(jiān)聽器胸竞,監(jiān)聽key的實(shí)效,監(jiān)聽到key失效時(shí)將后續(xù)邏輯加上煎饼。 當(dāng)然我們也可以利用rabbitmq剃盾、activemq等消息中間件的延遲隊(duì)列服務(wù)實(shí)現(xiàn)該需求痒谴。

7、分頁意鲸、模糊搜索

redis的set集合中提供了一個(gè)zrangebylex方法尽爆,語法如下:

ZRANGEBYLEX key min max [LIMIT offset count]

通過ZRANGEBYLEX zset - + LIMIT 0?10 可以進(jìn)行分頁數(shù)據(jù)查詢漱贱,其中-?+表示獲取全部數(shù)據(jù)

zrangebylex key min max 這個(gè)就可以返回字典區(qū)間的數(shù)據(jù)幅狮,利用這個(gè)特性可以進(jìn)行模糊查詢功能,這個(gè)也是目前我在redis中發(fā)現(xiàn)的唯一一個(gè)支持對(duì)存儲(chǔ)內(nèi)容進(jìn)行模糊查詢的特性擎值。

前幾天我通過這個(gè)特性逐抑,對(duì)學(xué)校數(shù)據(jù)進(jìn)行了模擬測(cè)試厕氨,學(xué)校數(shù)據(jù)60萬左右,響應(yīng)時(shí)間在700ms左右品追,比mysql的like查詢稍微快一點(diǎn)冯丙,但是由于它可以避免大量的數(shù)據(jù)庫io操作胃惜,所以總體還是比直接mysql查詢更利于系統(tǒng)的性能保障。


8鲫趁、點(diǎn)贊利虫、好友等相互關(guān)系的存儲(chǔ)

Redis set對(duì)外提供的功能與list類似是一個(gè)列表的功能糠惫,特殊之處在于set是可以自動(dòng)排重的,當(dāng)你需要存儲(chǔ)一個(gè)列表數(shù)據(jù)硼讽,又不希望出現(xiàn)重復(fù)數(shù)據(jù)時(shí)固阁,set是一個(gè)很好的選擇,并且set提供了判斷某個(gè)成員是否在一個(gè)set集合內(nèi)的重要接口碉克,這個(gè)也是list所不能提供的漏麦。 又或者在微博應(yīng)用中冀膝,每個(gè)用戶關(guān)注的人存在一個(gè)集合中窝剖,就很容易實(shí)現(xiàn)求兩個(gè)人的共同好友功能。

這個(gè)在奶茶活動(dòng)中有運(yùn)用脊奋,就是利用set存儲(chǔ)用戶之間的點(diǎn)贊關(guān)聯(lián)的,另外在點(diǎn)贊前判斷是否點(diǎn)贊過就利用了sismember方法讶隐,當(dāng)時(shí)這個(gè)接口的響應(yīng)時(shí)間控制在10毫秒內(nèi)久又,十分高效。

9炉峰、隊(duì)列

由于redis有l(wèi)ist push和list pop這樣的命令疼阔,所以能夠很方便的執(zhí)行隊(duì)列操作婆廊。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市巫橄,隨后出現(xiàn)的幾起案子淘邻,更是在濱河造成了極大的恐慌,老刑警劉巖嗦随,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件列荔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡枚尼,警方通過查閱死者的電腦和手機(jī)贴浙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來署恍,“玉大人崎溃,你說我怎么就攤上這事《⒅剩” “怎么了袁串?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵囱修,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我源譬,道長(zhǎng),這世上最難降的妖魔是什么养渴? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮孵滞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己痘绎,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布蛾号。 她就那樣靜靜地躺著,像睡著了一般乐疆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死伍绳,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的权谁。 我是一名探鬼主播卤妒,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼士复,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼菠镇!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤捻脖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后抛寝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蛮位,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年控轿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡望浩,死狀恐怖酥宴,靈堂內(nèi)的尸體忽然破棺而出肆糕,到底是詐尸還是另有隱情始赎,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布峦朗,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜委乌,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望革砸。 院中可真熱鬧算利,春花似錦缎患、人聲如沸风题。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至歧焦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間肚医,已是汗流浹背绢馍。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留肠套,地道東北人舰涌。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像你稚,于是被迫代替她去往敵國(guó)和親瓷耙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

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

  • 五種數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)介 Redis是使用C編寫的刁赖,內(nèi)部實(shí)現(xiàn)了一個(gè)struct結(jié)構(gòu)體redisObject對(duì)象搁痛,通過結(jié)構(gòu)體...
    彥幀閱讀 6,934評(píng)論 0 14
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,905評(píng)論 2 89
  • 文化又叫群體習(xí)慣。 春曉滌生 今天宇弛,是到北京通州玉橋中學(xué)跟崗實(shí)習(xí)的第一天鸡典。 玉橋中學(xué)的課間文化,很有特色枪芒,一個(gè)字:...
    春曉滌生閱讀 354評(píng)論 0 1
  • I. 老師和學(xué)生之間沒有共同體,不該形成疗垛。 我第一個(gè)碩士畢業(yè)三個(gè)月回校聊天症汹,還把我當(dāng)導(dǎo)師。我說“你我已不是師生了贷腕。...
    頑童小逗豆閱讀 1,592評(píng)論 5 12