我是靠谱客的博主 壮观大雁,最近开发中收集的这篇文章主要介绍从Redis中删除大集合对象的方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Redis中的大集合对象,如set、zset等,如果有上千万个元素,一般是不能直接用del命令来删除的,因为del命令可能会耗时几秒钟,而redis本身是单线程的,在高并发的情况下会阻塞大量的请求,严重时可能引起雪崩。

那我们要怎么来删除它呢?

这里我们给出一个解决方案,即结合lua脚本来实现删除大对象。

先写如下lua脚本,保存为test_del.lua文件。

<<test_del.lua>>

local count=redis.call('zcard', 'big_obj_key')

while count>0 do

        redis.call('zremrangebyrank', ' big_obj_key', 0, 500)  // 每次删除500个元素

        count=redis.call('zcard', ' big_obj_key')

        print("Current count: ", count)

end

最后,在命令行使用如下命令执行该lua脚本即可。

bin/redis-cli -p 6370  -a  yourpasswd  --eval   /usr/local/redis/lua/test_del.lua

是不是很方便啊?

 

最后

以上就是壮观大雁为你收集整理的从Redis中删除大集合对象的方法的全部内容,希望文章能够帮你解决从Redis中删除大集合对象的方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(72)

评论列表共有 0 条评论

立即
投稿
返回
顶部