在不影响性能的情况下,怎么快速批量删除redis数据? -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

在不影响性能的情况下,怎么快速批量删除redis数据?

爵霸 2016-03-09 13:11:18 1775

业务场景:
redis数据切换到Oracle,取消持久化,redis只做缓存

具体需求:
从redis从库里获得了400w个无过期时间的hashkey,需要在主库中将其删除

矛盾点:
1.如果直接批量删除会导致redis拥塞,影响正常业务
2.如果每删除一个key,sleep50ms,不会影响业务,但是根据经验要跑两天

最终问题:
在不影响性能的情况下,怎么快速批量删除redis数据?

缓存 NoSQL Oracle 关系型数据库 Redis
分享到
取消 提交回答
全部回答(1)
  • 爵霸
    2019-07-17 18:55:51

    Redis删key删得飞快,400w也不在话下。我怀疑其实瓶颈在于网络。

    如果你是一个一个key删的,每次发送一个命令都会导致客户端等待redis的回复,浪费了大量网络带宽。

    可以试试用pipelining/transactions。在不饱和redis端网络带宽的前提下,以最大速度发送命令,然后一次执行。

    如果这都不行的话,可以写一个Lua脚本,识别并删除无用的key,发送到redis用eval执行。这样应该不会阻塞网络。

    如果这样还是影响业务的话。。终极解决方案是创建一个master/slave,在slave上删除key,而将请求用master处理。删完key之后把slave晋升成master,再将请求转向它。

    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题