Redis key 丟失排查

相信用Redis的小伙伴都有遇到過key丟失的問題,當(dāng)然,每個人的用的策略不一樣也可能會導(dǎo)致解決問題的方案不一樣。本文主要的主要原因內(nèi)存不足導(dǎo)致的。

1.首先要先檢查key是否設(shè)置了過期時間

可以使用命令查看
ttl key
如果值是-1,表示沒有設(shè)定過期時間

2.檢查是否有人刪除了key或者flushdb和flushall

執(zhí)行info commandstats
如圖1,格式將會是cmdstat_xxx: calls=???,usec=???,user_per_call=???的出現(xiàn)

截屏2022-10-06 下午2.01.30.png

1.命令執(zhí)行的次數(shù) 2.命令耗費的cpu時間ms 3.執(zhí)行每個命令耗費的平均cpu時間ms

可以查看del、flushdb、flushall的次數(shù),可能執(zhí)行時已經(jīng)有大量的調(diào)用,可以先執(zhí)行config resetstat進行重置

3.檢查內(nèi)存的配置,然后再查看是否超出內(nèi)存設(shè)定的參數(shù)導(dǎo)致被回收

可以使用命令 info 查看
evicted(驅(qū)逐)_keys: 因最大內(nèi)存容量限制而被驅(qū)逐的鍵數(shù)量

截屏2022-10-06 下午2.08.47.png

如果evited keys大于0的情況表示已經(jīng)進行了驅(qū)逐,可以往內(nèi)存不足的方向去尋找問題。

4.檢查是否設(shè)置了最大內(nèi)存

config get maxmemory 可以進行查看

5.檢查內(nèi)存使用情況

info memory 查看當(dāng)前內(nèi)存量和峰值

截屏2022-10-06 下午2.14.09.png

6.如果設(shè)定了最大內(nèi)存,內(nèi)存也接近并且峰值非常的大,就要看看淘汰策略是否合適。

6.1 先查看當(dāng)前策略

config get maxmemory-policy

因為先前是去人是內(nèi)存問題刪除的key,所以可以
1.淘汰策略更改為volatile-lru
2.設(shè)置最大內(nèi)存 config set memory ???

經(jīng)過上面調(diào)整,繼續(xù)觀察是否有key的丟失,如果沒有那么可以判定是因為該原因。文章里圖片是為了更直觀的進行解釋說明,并沒有使用生產(chǎn)服務(wù)器上的具體參數(shù),請見諒。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Redis [TOC] NoSql入門和概述 入門概述 互聯(lián)網(wǎng)時代背景下大機遇,為什么用nosql 1.單機MyS...
    hakuna4Matata閱讀 550評論 0 0
  • Redis之父:Salvatore Sanfilippo本文基于Redis3.2.100版本(較早版本) 問題 R...
    卡斯特梅的雨傘閱讀 832評論 0 1
  • 01.NoSQL入門概述-上 1.互聯(lián)網(wǎng)時代背景下大機遇,為什么用NoSQL 1.單機MySQL的美好年代 在90...
    ytyt1313閱讀 304評論 0 0
  • Catalog 1 Redis適用場景?Redis底層數(shù)據(jù)結(jié)構(gòu)使用場景? 2 Redis到底是單線程還是多線程?R...
    allen鍋閱讀 444評論 0 0
  • redis連接數(shù)與最大連接數(shù) 方法1:在redis-cli命令行使用:info clients可以查看當(dāng)前的red...
    尋水魚閱讀 1,929評論 0 0

友情鏈接更多精彩內(nèi)容