新聞中心
活動(dòng)中用到了Redis來(lái)存放用戶的獎(jiǎng)勵(lì)票信息,原則上是一天一清,現(xiàn)在設(shè)置的是
expireAt(零點(diǎn))
但是最近運(yùn)營(yíng)反饋有部分用戶有異常票,經(jīng)過(guò)加log排查后發(fā)現(xiàn)指定在零點(diǎn)過(guò)期的key并沒(méi)有準(zhǔn)時(shí)過(guò)期,從庫(kù)中在0點(diǎn)23秒的時(shí)候還能讀到數(shù)據(jù),程序中用了簡(jiǎn)單的exists(key) 判斷key是否存在,存在就取值。
這么想可能是主庫(kù)在零點(diǎn)過(guò)期了,但是沒(méi)有及時(shí)同步到從庫(kù)。在網(wǎng)上一看,有用戶遇到同樣的情況,Redis版本3。2之前的會(huì)存在這種情況,然后查看了一下我們的redis版本,發(fā)現(xiàn)是3.0 這也就難怪了,應(yīng)該是遇到一樣的情況了;
所以解決方案是在exists(key) 判斷的同時(shí)加上對(duì)key 生存時(shí)間ttl的判斷,如果ttl是0就不取 了。
實(shí)驗(yàn):
然后我們實(shí)測(cè)了一下,現(xiàn)在主庫(kù)設(shè)置一個(gè)key的過(guò)期時(shí)間,然后在過(guò)期時(shí)間前后去讀從庫(kù),發(fā)現(xiàn)直接從從庫(kù)讀取過(guò)期key的時(shí)候確實(shí)會(huì)有延遲,5到7秒不等。但是我們讀主庫(kù),基本無(wú)延遲,到點(diǎn)就讀不到了。
總結(jié):對(duì)于3.2之前的版本Redis會(huì)存在主從過(guò)期key同步失效的延時(shí)
相關(guān)鏈接:https://www.cnblogs.com/bridger/archive/2012/11/07/2758734.html
https://blog.csdn.net/u012538947/article/details/52540313
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)名稱:REDIS主從架構(gòu)key過(guò)期時(shí)間失效問(wèn)題-創(chuàng)新互聯(lián)
分享地址:http://www.dlmjj.cn/article/djigge.html