1.業(yè)務(wù)服務(wù)器到 Redis 服務(wù)器之間的網(wǎng)絡(luò)存在問題,例如網(wǎng)絡(luò)線路質(zhì)量不佳,網(wǎng)絡(luò)數(shù)據(jù)包在傳輸時(shí)存在延遲、丟包等情況
2.Redis 本身存在問題,需要進(jìn)一步排查是什么原因?qū)е?Redis 變慢
原因1:使用復(fù)雜度過高的命令
查看慢日志,看是否有復(fù)雜度過高的命令。
原因2:操作bigkey(value很大)
若你查詢慢日志發(fā)現(xiàn),并不是復(fù)雜度過高的命令導(dǎo)致的,而都是 SET / DEL 這種簡單命令出現(xiàn)在慢日志中,那么你就要懷疑你的實(shí)例否寫入了 bigkey。
原因3:集中過期
如果你發(fā)現(xiàn),平時(shí)在操作 Redis 時(shí),并沒有延遲很大的情況發(fā)生,但在某個(gè)時(shí)間點(diǎn)突然出現(xiàn)一波延時(shí),其現(xiàn)象表現(xiàn)為:變慢的時(shí)間點(diǎn)很有規(guī)律,例如某個(gè)整點(diǎn),或者每間隔多久就會(huì)發(fā)生一波延遲。
如果是出現(xiàn)這種情況,那么你需要排查一下,業(yè)務(wù)代碼中是否存在設(shè)置大量 key 集中過期的情況。
原因4:開啟AOF
原因5:fork耗時(shí)嚴(yán)重
為了保證 Redis 數(shù)據(jù)的安全性,我們可能會(huì)開啟后臺定時(shí) RDB 和 AOF rewrite 功能。
如果你發(fā)現(xiàn)操作 Redis 延遲變大,都發(fā)生在 Redis 后臺 RDB 和 AOF rewrite 期間,那你就需要排查,在這期間有可能導(dǎo)致變慢的情況。
原因6:碎片整理
Redis變慢原因(系統(tǒng)相關(guān))
原因1:實(shí)例內(nèi)存達(dá)到上限
淘汰策略執(zhí)行占用時(shí)間,淘汰策略改為隨機(jī)淘汰,隨機(jī)淘汰比 LRU 要快很多(視業(yè)務(wù)情況調(diào)整)