1.分析键值大小
身为一名运维工程师我们应该时刻关注服务器的运行情况,为了让缓存服务器可以长久的稳定运行下去,就要保证拥有足够用的内存来支持更大更持久的缓存。因此定期分析键值很有必要,将那些用不到且较大的键值清除掉。具体方法如下:
安装工具
yum install python-pip gcc python-devel -y
git clone https://github.com/scripathikrishnan/redis-rdb-tools
cd redis-rdb-tools
python setup.py install
生成.csv纯文本形式存储表格数据利于后期分析键值大小
rdb -c memory redis_6390.rdb -f redis_6380.rdb.csv
利用awk将csv文本的有用数据导入到txt文本形式中
awk -F"," {print$4,$2,$3,$1}' redis_6380.rdb.csv | sort |uniq>192.168.108.52:6380.txt
2.监控过期键
如果一个键已经设置了过期时间,在这个时候在set这个键,过期时间就会取消。
为了防止出现类似事故需要监控键过期时间。可以利用scan命令范围查询键名,然后循环读取tt1时间,scan命令是以非阻塞的方式实现key值得查找的,因此性能比keys命令好。
可以用下面这个脚本进行监控
3.内存满了怎么办?
一般情况都会提前设定限制使用内存大小,一般设置系统内存的一半给系统预留内存空间。
在redis.conf配置文件中设置限制内存大小
动态调整内存
如果真遇到内存满了无法处理数据了可以利用config get maxmemory +内存大小 来动态调整限制内存。config get maxmemory 0 表示设置不限制内存。
注意:动态内存调整只能调整的比实际占用的大,不能调整的比实际占用的小。
日常还可以通过脚本或者zabbix来监控内存使用情况。大概思路就是通过登录到集群节点中用info命令查看内存使用大小,用awk命令获取当前内存使用大小,然后用脚本来监控这个值或者zabbix自定义参数监控这个值,当这个值大于某一上线就会进行报警。