2 回答

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
可以預(yù)估一下你的業(yè)務(wù)請(qǐng)求時(shí)長(zhǎng),通常都在50-100ms之間,你的失效時(shí)間可以設(shè)置到100ms,如果更高你可以設(shè)置到1s,在redis防重的下一步就是數(shù)據(jù)庫(kù)防重,數(shù)據(jù)庫(kù)防重一定是要做的,所以就算redis鎖失效,數(shù)據(jù)庫(kù)肯定能防住。

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊
不知道我現(xiàn)在救火還來(lái)不來(lái)得及。
不要使用 setnx 來(lái)創(chuàng)建一個(gè)可過(guò)期的鎖,請(qǐng)使用 set key value nx ex time (SET 文檔地址)來(lái)創(chuàng)建。這樣能確保 setnx 和 expire 結(jié)合為一個(gè)原子操作。
如果先 setnx 再 expire,這個(gè)操作不是原子的,可能引發(fā)新的問(wèn)題。比如 setnx 之后程序異常崩潰了,導(dǎo)致該 key 永不過(guò)期,從而引起其他請(qǐng)求鎖的線程一直阻塞。
希望現(xiàn)在救火還來(lái)得及。
添加回答
舉報(bào)