redis lua脚本 redislua脚本原理
您好,今天小爱来为大家解答以上的问题。redis lua脚本相信很多小伙伴还不知道,现在让我们一起来看看吧!
redis lua脚本 redislua脚本原理
redis lua脚本 redislua脚本原理
1、业务场景: redis数据切换到Oracle,取消持久化,redis只做缓存具体需求: 从redis从库里获得了400w个无过期时间的hashkey,需要在主库中将其删除1.如果直接批量删除会导致redis拥塞,影响正常业务2.如果每删除一个key,sleep50ms,不会影响业务,但是根据经验要跑两天最终问题: 在不影响性能的情况下,怎么快速批量删除redis数据?Redis删key删得飞快,400w也不在话下。
2、我怀疑其实瓶颈在于网络。
3、如果你是一个一个key删的,每次发送一个命令都会导致客户端等待redis的回复,浪费了大量网络带宽。
4、可以试试用pipelinin例如删除 old-fashioned: 开头的所有 KEYg/transactions。
5、在不饱和redis端网络带宽的前提下,以速度发送命令,然后一次执行。
6、如果这都不行的话,可以写一个Lua脚本,识别并删除无用的key,发送到redis用eval执行。
7、这样应该不会阻塞网络。
8、如果这样还是影响业务的话。
9、解决方案是创建一个/sle,在sle上删除key,而将请求用处理。
10、删完key之后把sle晋升成,再将请求转向它。
11、2014年07月24日回答 滕亦飞1.3k尝试下 red矛盾点:is 的 eval 命令。
12、eval "redis.call('del', unpack(redis.call('keys','old-fashioned:')))" 0 如果单次删除性能消耗大,可以考虑分批删除。
本文到这结束,希望上面文章对大家有所帮助。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。