记一次开发环境redis出现key丢失排查
背景:
开发环境大家共用redis集群, 出现设置的redis key随机丢失
1. 检查key是否设置了过期时间
执行ttl key
发现值是-1,并没有设定过期时间
2. 检查是否有人删除key,或者flushdb,flushall
执行info commandstats
cmdstat_XXX
:calls=XXX,usec=XXX,usec_per_call=XXX
看出命令执行的次数、命令耗费的 CPU 时间(单位毫秒)、执行每个命令耗费的平均 CPU 时间(单位毫秒)
看看del,flushdb,flushall的次数,可能执行的时候已经有大量的调用,先执行config resetstat进行重置
3. 检查内存配置,是否超出内存设定被回收
a. info命令查看
evicted_keys
: 因最大内存容量限制而被驱逐(evict)的键数量
当时发现evicted keys值大于0,怀疑内存不够
b. 检查是否设置最大内存
执行CONFIG GET maxmemory
c. 检查内存使用
执行info memory, 可以看到当前使用内存量,和峰值
d.看到设定了最大内存,内存也将要接近并且曾经的峰值非常大, 那就需要看看设定的淘汰策略
执行config get maxmemory-policy
发现设定的淘汰策略为: allkeys-lru
Redis提供6种数据淘汰策略:
- volatile-lru:从已设置过期时间的内存数据集中挑选最近最少使用的数据 淘汰;
- volatile-ttl: 从已设置过期时间的内存数据集中挑选即将过期的数据 淘汰;
- volatile-random:从已设置过期时间的内存数据集中任意挑选数据 淘汰;
- allkeys-lru:从内存数据集中挑选最近最少使用的数据 淘汰;
- allkeys-random:从数据集中任意挑选数据 淘汰;
- no-enviction(驱逐):禁止驱逐数据。(默认淘汰策略。当redis内存数据达到
至此大概率确认是内存不够导致KEY被删除。
列举2种解决方案:
1. 调整合适的策略,内存不足清除过期的key
执行 config set maxmemory-policy volatile-lru
2. 设置更大的内存
CONFIG SET maxmemory XXXX
结果:
调整策略为volatile-lru后,经过观察,设定的key没有再出现丢失。
参考:
https://www.jianshu.com/p/ca7e15348323
https://www.cnblogs.com/mushroom/p/4738170.html
https://blog.csdn.net/wufaliang003/article/details/80742978
记一次开发环境redis出现key丢失排查相关推荐
- 利用Kubernetes搭建便携式开发环境之MySQL和Redis
之前给大家介绍过, 我自己用的开发环境都是容器化的,只不过前两年不会用K8,大部分都是用的 Docker 或者 Docker-Compose.随着这一年多对 K8 的学习和工作中的使用,一直有想法用K ...
- SAP开发环境ABAP的搭建(客户端和服务器),Developer Key和AccessKey的绕过方法
目录 一.前言 二.客户端GUI安装 1.下载好SAP GUI 750 2.解压后找到SAPGUISetup.exe 3.安装 4.安装完整教程 三.服务端搭建 1.安装VmWare虚拟机 2.下载虚 ...
- 全新安装Mac OSX 开发者环境 同时使用homebrew搭建 PHP,Nginx ,MySQL,Redis,Memcache ... ... (LNMP开发环境)
文章来源:https://segmentfault.com/a/1190000000606752 OS X Mavericks 重新安装系统,在苹果商店下载好OS X Mavericks安装文件,然后 ...
- 【Spring Boot2.x】整合redis、mybatisPlus这篇文章就够了【真实开发环境实用】
概述 - 采用springboot2.2.4.RELEASE版本,采用lettuce对redis进行整合,并且使用mybatisPlus实战- - 源码地址:https://github.com/Bl ...
- 记一次线上环境 redis偶尔连接超时报错 解决
记一次线上环境 redis偶尔连接超时报错 解决 贴出本地控制台日志 说实话,很痛苦,跟进很久了,一直认为的jvm程序所使用的配置的连接池框架问题 因为程序为 springboot 2 spring ...
- 区块链100讲:如何使用开发环境命令行注册EOS靓号及变更EOS账号的active key和owner key?
1 摘要 [本文目标] 通过本文学习,程序员可以在EOS本地环境完成主网心意的12位EOS账号注册,并且可以通过EOS本地环境完成EOS注册账号的active key和owner key的变更. 在E ...
- 记一次Qt5.12.2 Android 开发环境配置
记一次Qt Android开发环境配置 文章目录 记一次Qt Android开发环境配置 前言 一.配置需要的安装包及测试环境 二.配置步骤 1安装Qt5.12.2 2.安装Java SDK 3.解压 ...
- HUAWEI 擎云L420 折腾记 (搭建arm gcc、openocd 雅特力 MCU开发环境)
HUAWEI 擎云L420 折腾记 前言 1. java 环境 2. python 3. C++/C 4. arm-gcc-none-eabi mcu开发 5. 雅特力修改的atlink版 openo ...
- elementary安装Java,使用U盘安装Linux最美桌面发行版Elementary OS 及常用开发环境配置(JDK,Redis,MySQL,Docker,IDEA,STS)...
前言 假期在家无聊,刚好把六年前的一台笔记本电脑利用起来,原来电脑虽然说配置说不上古董机器,但是运行win系统感觉还是不流畅,所幸给换成Linux桌面版系统,在网上查阅了很多,Linux桌面系统要么推 ...
最新文章
- 您有一个新的订单mp3在线_Airtable,不仅仅是强大的在线表格应用,而是一个新物种...
- Python让你成为AI 绘画大师,简直太惊艳了!(附代码))
- java汉字转换成拼音_Java代码将汉字转换成拼音
- Webservices
- 并发用户数和TPS的关系
- 假如我是面试官,我会这样虐你
- Qt学习笔记之QChar
- 【uni-app】H5中使用videojs播放器播放视频
- 关于Sleuth的几个问题
- 计算机网络实训简介,计算机网络实验报告介绍.doc
- keras callback中的stop_training
- UbuntuSkills
- linux怎样重启命令,Linux重启命令介绍
- python导入Wordcloud包
- Allegro PCB设计中Etch层走线阻焊开窗的一种方法
- Unity3D Content Size Fitter的坑
- winform抓取淘宝宝贝详细页的上下架时间等信息
- 蜂鸣器电路中有大内容
- Ubuntu系统重装Ubuntu系统
- RFSoC全面解析(八)—— ZCU111 RFSoC评估工具的上位机界面