Redis的常見使用場景

redis應(yīng)用場景總結(jié)redis平時我們用到的地方蠻多的竿滨,下面就了解的應(yīng)用場景做個總結(jié):

1温峭、熱點數(shù)據(jù)的緩存
由于redis訪問速度塊攻泼、支持的數(shù)據(jù)類型比較豐富揖赴,所以redis很適合用來存儲熱點數(shù)據(jù),另外結(jié)合expire竭钝,我們可以設(shè)置過期時間然后再進行緩存更新操作梨撞,這個功能最為常見,我們幾乎所有的項目都有所運用蜓氨。

2聋袋、限時業(yè)務(wù)的運用
redis中可以使用expire命令設(shè)置一個鍵的生存時間,到時間后redis會刪除它穴吹。利用這一特性可以運用在限時的優(yōu)惠活動信息幽勒、手機驗證碼等業(yè)務(wù)場景。

3港令、計數(shù)器相關(guān)問題
redis由于incrby命令可以實現(xiàn)原子性的遞增啥容,所以可以運用于高并發(fā)的秒殺活動锈颗、分布式序列號的生成、具體業(yè)務(wù)還體現(xiàn)在比如限制一個手機號發(fā)多少條短信咪惠、一個接口一分鐘限制多少請求击吱、一個接口一天限制調(diào)用多少次等等。

4遥昧、排行榜相關(guān)問題
關(guān)系型數(shù)據(jù)庫在排行榜方面查詢速度普遍偏慢覆醇,所以可以借助redis的SortedSet進行熱點數(shù)據(jù)的排序。

在奶茶活動中炭臭,我們需要展示各個部門的點贊排行榜永脓, 所以我針對每個部門做了一個SortedSet,然后以用戶的openid作為上面的username,以用戶的點贊數(shù)作為上面的score, 然后針對每個用戶做一個hash,通過zrangebyscore就可以按照點贊數(shù)獲取排行榜,然后再根據(jù)username獲取用戶的hash信息鞋仍,這個當時在實際運用中性能體驗也蠻不錯的常摧。

5、分布式鎖
這個主要利用redis的setnx命令進行威创,setnx:"set if not exists"就是如果不存在則成功設(shè)置緩存同時返回1落午,否則返回0 ,這個特性在俞你奔遠方的后臺中有所運用肚豺,因為我們服務(wù)器是集群的溃斋,定時任務(wù)可能在兩臺機器上都會運行,所以在定時任務(wù)中首先 通過setnx設(shè)置一個lock详炬,如果成功設(shè)置則執(zhí)行盐类,如果沒有成功設(shè)置寞奸,則表明該定時任務(wù)已執(zhí)行呛谜。 當然結(jié)合具體業(yè)務(wù),我們可以給這個lock加一個過期時間枪萄,比如說30分鐘執(zhí)行一次的定時任務(wù)隐岛,那么這個過期時間設(shè)置為小于30分鐘的一個時間 就可以,這個與定時任務(wù)的周期以及定時任務(wù)執(zhí)行消耗時間相關(guān)瓷翻。

當然我們可以將這個特性運用于其他需要分布式鎖的場景中聚凹,結(jié)合過期時間主要是防止死鎖的出現(xiàn)。

6齐帚、延時操作
這個目前我做過相關(guān)測試妒牙,但是還沒有運用到我們的實際項目中,下面我舉個該特性的應(yīng)用場景对妄。 比如在訂單生產(chǎn)后我們占用了庫存湘今,10分鐘后去檢驗用戶是夠真正購買,如果沒有購買將該單據(jù)設(shè)置無效剪菱,同時還原庫存摩瞎。 由于redis自2.8.0之后版本提供Keyspace Notifications功能拴签,允許客戶訂閱Pub/Sub頻道,以便以某種方式接收影響Redis數(shù)據(jù)集的事件旗们。 所以我們對于上面的需求就可以用以下解決方案蚓哩,我們在訂單生產(chǎn)時,設(shè)置一個key上渴,同時設(shè)置10分鐘后過期岸梨, 我們在后臺實現(xiàn)一個監(jiān)聽器,監(jiān)聽key的實效稠氮,監(jiān)聽到key失效時將后續(xù)邏輯加上盛嘿。 當然我們也可以利用rabbitmq、activemq等消息中間件的延遲隊列服務(wù)實現(xiàn)該需求括袒。

7次兆、分頁、模糊搜索
redis的set集合中提供了一個zrangebylex方法锹锰,語法如下:

ZRANGEBYLEX key min max [LIMIT offset count]

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

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

前幾天我通過這個特性,對學(xué)校數(shù)據(jù)進行了模擬測試痢士,學(xué)校數(shù)據(jù)60萬左右彪薛,響應(yīng)時間在700ms左右,比mysql的like查詢稍微快一點怠蹂,但是由于它可以避免大量的數(shù)據(jù)庫io操作善延,所以總體還是比直接mysql查詢更利于系統(tǒng)的性能保障。

8城侧、點贊易遣、好友等相互關(guān)系的存儲
Redis set對外提供的功能與list類似是一個列表的功能,特殊之處在于set是可以自動排重的嫌佑,當你需要存儲一個列表數(shù)據(jù)豆茫,又不希望出現(xiàn)重復(fù)數(shù)據(jù)時,set是一個很好的選擇屋摇,并且set提供了判斷某個成員是否在一個set集合內(nèi)的重要接口揩魂,這個也是list所不能提供的。 又或者在微博應(yīng)用中炮温,每個用戶關(guān)注的人存在一個集合中火脉,就很容易實現(xiàn)求兩個人的共同好友功能。

這個在奶茶活動中有運用,就是利用set存儲用戶之間的點贊關(guān)聯(lián)的忘分,另外在點贊前判斷是否點贊過就利用了sismember方法棋枕,當時這個接口的響應(yīng)時間控制在10毫秒內(nèi),十分高效妒峦。

9重斑、隊列
由于redis有l(wèi)ist push和list pop這樣的命令,所以能夠很方便的執(zhí)行隊列操作肯骇。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末窥浪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子笛丙,更是在濱河造成了極大的恐慌漾脂,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胚鸯,死亡現(xiàn)場離奇詭異骨稿,居然都是意外死亡,警方通過查閱死者的電腦和手機姜钳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門坦冠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人哥桥,你說我怎么就攤上這事辙浑。” “怎么了拟糕?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵判呕,是天一觀的道長。 經(jīng)常有香客問我送滞,道長侠草,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任累澡,我火速辦了婚禮梦抢,結(jié)果婚禮上般贼,老公的妹妹穿的比我還像新娘愧哟。我一直安慰自己,他們只是感情好哼蛆,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布蕊梧。 她就那樣靜靜地躺著,像睡著了一般腮介。 火紅的嫁衣襯著肌膚如雪肥矢。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天,我揣著相機與錄音甘改,去河邊找鬼旅东。 笑死,一個胖子當著我的面吹牛十艾,可吹牛的內(nèi)容都是我干的抵代。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼忘嫉,長吁一口氣:“原來是場噩夢啊……” “哼荤牍!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起庆冕,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤康吵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后访递,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體晦嵌,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年拷姿,在試婚紗的時候發(fā)現(xiàn)自己被綠了耍铜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡跌前,死狀恐怖棕兼,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情抵乓,我是刑警寧澤伴挚,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站灾炭,受9級特大地震影響茎芋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蜈出,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一田弥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧铡原,春花似錦偷厦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽手形。三九已至酪穿,卻和暖如春棍鳖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背唉侄。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工冷尉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留歪赢,地道東北人慧瘤。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像本橙,于是被迫代替她去往敵國和親晚岭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

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

  • 五種數(shù)據(jù)結(jié)構(gòu)簡介 Redis是使用C編寫的勋功,內(nèi)部實現(xiàn)了一個struct結(jié)構(gòu)體redisObject對象坦报,通過結(jié)構(gòu)體...
    彥幀閱讀 6,934評論 0 14
  • redis應(yīng)用場景總結(jié)redis平時我們用到的地方蠻多的,下面就了解的應(yīng)用場景做個總結(jié): 1狂鞋、熱點數(shù)據(jù)的緩存 由于...
    yschen閱讀 111,070評論 0 60
  • 本文對Redis的過期機制簡單的講解一下講解之前我們先拋出一個問題片择,我們知道很多時候服務(wù)器經(jīng)常會用到redis作為...
    流藍淺閱讀 3,983評論 0 2
  • 天氣: 晴 心情指數(shù):8 小確幸: 每日金句?【覺察生活的點滴】 Objective 你對今天學(xué)的記得什么? 實用...
    學(xué)霸教練李斌閱讀 171評論 0 0
  • 吃好吃的骚揍,穿漂亮衣服不一定會很開心字管,發(fā)自內(nèi)心的開心,來自對文字的欣賞和贊美
    不忘初心冪閱讀 143評論 0 0