怎么在Redis里按模式删除数据
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,小编给大家分享一下怎么在Redis里按模式删除数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一台Redis服务器在很短
千家信息网最后更新 2025年12月03日怎么在Redis里按模式删除数据
小编给大家分享一下怎么在Redis里按模式删除数据,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
一台Redis服务器在很短的时间里消耗了几十个G的内存,最终因为SWAP而宕机。因为这台服务器的社会背景比较复杂,所以一时无法判断犯罪嫌疑人到底是谁。
最开始的直觉是认为肯定有人保存了大体积的数据,于是问题就变成了找出哪些键占用的空间比较大,DBA同事用了redis-rdb-tools等工具来分析数据文件。可惜的是虽然找到了一些大体积的键,但最终都排除了嫌疑,问题似乎陷入了僵局。
在被直觉带入死胡同之后,我们开始调整调查的角度:即便一个键本身占用的空间并不大,但是如果相同模式的键数量很多的话,那么合计起来一样会占用大量空间,于是问题就变成了找出哪些相同模式的键占用的空间比较大。这次我不想用什么工具,而是打算在测试服务器上一边删除可疑键一边查看内存变化情况:
shell> /path/to/redis-cli keys foo:* | xargs /path/to/redis-cli del
悲催的是一运行这个命令服务器就挂了!因为数据太多了,所以KEYS受不了。此时应该使用SCAN,它有游标的概念,每次迭代只涉及很少的数据。
直接在命令行使用SCAN有些麻烦,于是我用了PHP:
setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY);$match = 'foo:*';$count = 10000;while ($keys = $redis->scan($it, $match, $count)) { $redis->del($keys);}?>在删除的同时注意监控内存变化情况,就能确认问题了:
shell> watch -d -n 1 '/path/to/redis-cli info | grep memory'
至于可疑键的获取,我是瞎蒙的,简单通过MONITOR或者SCAN获取采样数据即可,另外从此案例看,监控键总数的变化幅度是很重要的,从INFO里能拿到它。
以上是"怎么在Redis里按模式删除数据"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
数据
模式
服务器
空间
问题
服务
内存
篇文章
变化
相同
可疑
体积
内容
命令
工具
情况
直觉
监控
复杂
重要
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
4g摄像头连接服务器失败原因
需要服务器管理软件吗
数据库管理员面试题和答案
知名的网络安全会议和比赛
兰州北龙口服务器
宝马互联网科技有限公司
软件开发研究生平均工资
数据库主属性是主键么
软件开发过程的迭代
中国高铁网络技术
湖南综合软件开发代理价格
初一视频软件开发
数据库的压缩和备份
互联网地图科技背景
你对网络安全重要性的认识
resin 数据库配置
北京大学vr文化遗产数据库
关于网络安全知识题库及答案
传奇4多久重启一次服务器
计算机网络技术科技论文
服务器关闭后运营商补偿标准
php 循环添加数据库数据
摄政王小说软件开发
服务器验证怎么关闭
北京工业服务器云服务器
答题pk软件开发多少钱
2021年网络安全宣传周方案
数据库箭头什么意思啊
域名服务器有多重要
沈阳哪有软件开发学校