在不影响redis性能的情况下,从服务器中批量删除redis数据

本文介绍在不影响Redis性能的前提下,如何批量删除服务器中的Redis数据。针对因定时任务参数配置失误导致的Redis内存占用过高问题,提供了两种批量清理数据的方法:一是通过Docker进入Redis容器并使用特定命令删除;二是直接在服务器上操作,结合Linux命令和Redis客户端实现批量删除。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在不影响redis性能的情况下,从服务器中批量删除redis数据
  • 业务背景:emmmmm之前在完成功能的时候,由于忘了给定时任务设置参数,从redis中统计完数据后,没有对redis的数据进行清除,导致redis占用服务器的内存越来越高,所以需要手动将今天之前的数据进行清除,而不影响对当天数据的统计,介个时候,就出现了下面的流程,之前也有参考网上的一些做法,就比如用master/slave的方式,还有用Lua脚本,这些也是一些解决方案,但是我并没有用,因为一看,就很高级hhhhhh,臣妾做不到啊!

方式一:

  1. 进入到redis容器中(PS:我们公司使用的是docker作为应用容器的,也就是把项目部署在docker中,所以redis也固然挂载在docker中)

    # docker exec -it redis-name bash
    
  2. 进入到redis容器后,开始删除操作,这时,你可以打开再打开一个选项卡,进入到redis的客户端直接查看删除前跟删除后的数据对比,但是谨慎(不要)使用keys * 命令,可以用scan命令,

    #进入到redis客户端
    docker exec -it redis-name redis-cli
    #以下redis客户端
    127.0.0.1:6380> scan 1 match name* count 1000

    具体命令可以参考redis文档:redis命令参考文档

    linmm@25weaod23j4l:/# redis-cli scan 1 match name* count 1000 | xargs redis-cli del
    

    以上命令表示,通过管道的方式,进入redis客户端中,模糊匹配到以name为开头的key,对匹配到的key进行删除,但是这样做的弊端就是可能删除不完整,因为scan不一定会把所有匹配到的key都罗列出来。但是直接用keys会造成阻塞,所以就用了这种方式。

方式二:

  1. 直接在服务器操作,通过linux连接redis,结合redis和linux相关命令实现批量删除。

    # redis-cli -p redis服务端口 -h redis的hostname scan 1 match name* count 1000 | xargs redis-cli -p redis服务端口 -h redis的hostname del
    

    以上~

    有什么更好的建议欢迎提出来哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值