1. 程式人生 > >REDIS 主從架構key過期時間失效問題

REDIS 主從架構key過期時間失效問題

活動中用到了Redis來存放使用者的獎勵票資訊,原則上是一天一清,現在設定的是
expireAt(零點)
但是最近運營反饋有部分使用者有異常票,經過加log排查後發現指定在零點過期的key並沒有準時過期,從庫中在0點23秒的時候還能讀到資料,程式中用了簡單的exists(key) 判斷key是否存在,存在就取值。
這麼想可能是主庫在零點過期了,但是沒有及時同步到從庫。在網上一看,有使用者遇到同樣的情況,Redis版本3。2之前的會存在這種情況,然後查看了一下我們的redis版本,發現是3.0 這也就難怪了,應該是遇到一樣的情況了;

所以解決方案是在exists(key) 判斷的同時加上對key 生存時間ttl的判斷,如果ttl是0就不取 了。

實驗:
然後我們實測了一下,現在主庫設定一個key的過期時間,然後在過期時間前後去讀從庫,發現直接從從庫讀取過期key的時候確實會有延遲,5到7秒不等。但是我們讀主庫,基本無延遲,到點就讀不到了。

總結:對於3.2之前的版本Redis會存在主從過期key同步失效的延時

相關連結:https://www.cnblogs.com/bridger/archive/2012/11/07/2758734.html

https://blog.csdn.net/u012538947/article/details/52540313