【102期】如何正確訪問Redis中的海量數(shù)據(jù)?服務(wù)才不會(huì)掛掉!
閱讀本文大概需要 2 分鐘。
來自:toutiao.com/i6697540366528152077
目錄
前言
事故產(chǎn)生
分析原因
解決方案
總結(jié)
前言
事故產(chǎn)生
分析原因
解決方案
復(fù)雜度雖然也是 O(n),但是它是通過游標(biāo)分步進(jìn)行的,不會(huì)阻塞線程
提供 count 參數(shù),不是結(jié)果數(shù)量,是redis單次遍歷字典槽位數(shù)量(約等于)
同 keys 一樣,它也提供模式匹配功能;
服務(wù)器不需要為游標(biāo)保存狀態(tài),游標(biāo)的唯一狀態(tài)就是 scan 返回給客戶端的游標(biāo)整數(shù);
返回的結(jié)果可能會(huì)有重復(fù),需要客戶端去重復(fù),這點(diǎn)非常重要;
單次返回的結(jié)果是空的并不意味著遍歷結(jié)束,而要看返回的游標(biāo)值是否為零
一、scan命令格式
SCAN?cursor?[MATCH?pattern]?[COUNT?count]
二、命令解釋:scan 游標(biāo) MATCH <返回和給定模式相匹配的元素> count 每次迭代所返回的元素?cái)?shù)量
三、舉例
redis?>?scan?0?match?user_token*?count?5?
?1)?"6"
?2)?1)?"user_token:1000"
?2)?"user_token:1001"
?3)?"user_token:1010"
?4)?"user_token:2300"
?5)?"user_token:1389"
redis?>?scan?6?match?user_token*?count?5?
?1)?"10"
?2)?1)?"user_token:3100"
?2)?"user_token:1201"
?3)?"user_token:1410"
?4)?"user_token:5300"
?5)?"user_token:3389"
總結(jié)
推薦閱讀:
【100期】面試官:BigDecimal一定不會(huì)丟失精度嗎?
【99期】中高級開發(fā)面試必問的Redis,看這篇就夠了!
【98期】面試官:給我說說你對Java GC機(jī)制的理解?
微信掃描二維碼,關(guān)注我的公眾號
朕已閱?
評論
圖片
表情

