一鞍陨、概述
??redis是現(xiàn)階段程序員很熟悉的一個(gè)工具,人人都說(shuō)它很強(qiáng)大从隆,功能多诚撵,江湖上到處都流傳著各種它的傳說(shuō)。而且键闺,不論看哪個(gè)大牛的博客寿烟,還是牛B公司的設(shè)計(jì)架構(gòu),通通都有redis的身影辛燥。但是筛武,在我工作經(jīng)歷當(dāng)中盅藻,其實(shí)很多程序員并不會(huì)用redis,甚至很多時(shí)候是為了用而用畅铭,瞎JB用的比比皆是氏淑,讓人唏噓不已,悄悄的在背后不屑的說(shuō)一句:臭SB硕噩。當(dāng)然假残,筆者可能也是這些“臭SB”之中的一員,所以特此記錄下我玩過(guò)的redis場(chǎng)景炉擅,為今后大家罵我提供文字依據(jù)辉懒。
PS : 我是個(gè)JAVA程序員,目前僅以JAVA語(yǔ)音進(jìn)行記錄谍失。
二眶俩、使用場(chǎng)景
1、分布式session
瞎蛋逼:
??web系統(tǒng)中session的重要性不言而喻快鱼,原本session這個(gè)東西颠印,是放在后臺(tái)通過(guò)容器進(jìn)行管理,可是隨著項(xiàng)目業(yè)務(wù)越來(lái)越大抹竹,單一節(jié)點(diǎn)已經(jīng)不能滿足業(yè)務(wù)需求线罕,系統(tǒng)開(kāi)始向著集群化,分布式化發(fā)展窃判。為了保證每一個(gè)節(jié)點(diǎn)的高可用钞楼,目前流行的都是把服務(wù)器做成無(wú)狀態(tài)的服務(wù)器。這個(gè)時(shí)候就要考慮分布式session的問(wèn)題了袄琳。在此我們不討論IP_HASH啊询件,通過(guò)容器共享session這些方式。我們就說(shuō)把session放到redis里這種操作唆樊。原理其實(shí)老簡(jiǎn)單了宛琅,不管用戶通過(guò)何種方式進(jìn)行的登錄,不管用戶通過(guò)那個(gè)節(jié)點(diǎn)登錄的系統(tǒng)窗轩,只需要把session放到redis里就好了夯秃,這樣用戶之后的操作,都可以通過(guò)統(tǒng)一的redis拿到所需要的數(shù)據(jù)了痢艺。
怎么做
感謝萬(wàn)能的spring仓洼,有個(gè)工具叫spring-session-data-redis,用它堤舒,沒(méi)跑色建。
2、分布式定時(shí)任務(wù)
setnx + expire舌缤。后臺(tái)兩個(gè)線程箕戳,一個(gè)搶鎖某残,一個(gè)更新消失時(shí)間。
3陵吸、分布式鎖
setnx玻墅。redlock(有spring boot 配套插件)
4、熱數(shù)據(jù)緩存
沒(méi)啥說(shuō)的壮虫,最常用
5澳厢、保存靜態(tài)頁(yè)面
秒殺系統(tǒng)中,常用來(lái)把頁(yè)面通過(guò)字符串形式保存在redis中
6囚似、預(yù)處理
高并發(fā)系統(tǒng)剩拢,把要處理的數(shù)據(jù)提前放到redis中,先做運(yùn)算饶唤,再放入MQ里排隊(duì)
7徐伐、接口限流
每個(gè)接口預(yù)設(shè)置時(shí)間,和流量
8募狂、共同好友
set 操作办素,交集,并集等