可以結(jié)合自己的項(xiàng)目講講,比如
熱點(diǎn)數(shù)據(jù)的緩存
緩存是Redis最常見的應(yīng)用場景,之所有這么使用,主要是因?yàn)镽edis讀寫性能優(yōu)異。而且逐漸有取代memcached,成為首選服務(wù)端緩存的組件。而且,Redis內(nèi)部是支持事務(wù)的,在使用時(shí)候能有效保證數(shù)據(jù)的一致性。
限時(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ù)場景。
計(jì)數(shù)器相關(guān)問題
redis由于incrby命令可以實(shí)現(xiàn)原子性的遞增,所以可以運(yùn)用于高并發(fā)的秒殺活動(dòng)、分布式序列號的生成、具體業(yè)務(wù)還體現(xiàn)在比如限制一個(gè)手機(jī)號發(fā)多少條短信、一個(gè)接口一分鐘限制多少請求、一個(gè)接口一天限制調(diào)用多少次等等。
分布式鎖
這個(gè)主要利用redis的setnx命令進(jìn)行,setnx:"set if not exists"就是如果不存在則成功設(shè)置緩存同時(shí)返回1,否則返回0 ,這個(gè)特性在俞你奔遠(yuǎn)方的后臺中有所運(yùn)用,因?yàn)槲覀兎?wù)器是集群的,定時(shí)任務(wù)可能在兩臺機(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)。 在分布式鎖的場景中,主要用在比如秒殺系統(tǒng)等。