LUA简单实用

Lua是个轻量级语言,比较小众化,所以社区论坛跟java相比肯定不是一个重量级,因此很多问题比较难找到答案。

实战场景:

对redis进行操作,需要批量进行redis指令操作,如果不使用lua,redis指令中也没有什么逻辑语句,涉及到的逻辑语句只能写java代码搞定,这样就需要发版,有的时候没法发紧急版本或者时间不够,这时候就可以使用lua来完成java的逻辑操作,redis支持lua脚本语言

另外一种,java程序开发过程中需要使用到一批的redis指令,频繁的调用redis指令需要建立连接,比较耗时间耗费性能,这时候可以放在lua脚本里,一起执行

离开redis,lua也能单独运行,轻量级语言,虽然没法完成java那种重型的工作,简单的工作也是可以完成的

案例:批量重命名Redis keys

想要批量对一堆的的key进行重命名,redis的api中提供的方法只能对单一的key进行重命名;
第一反应是写个java程序,for循环,这是java程序员的本能,但是这样一来二去太慢,还要发版
第二种方案就用lua代替java进行批量重命名,只需要提供一份lua脚本文件即可

eval "local keys = redis.call('keys', KEYS[1]);
for i, v in pairs(keys) 
  do local s=string.gsub(keys[i], ,ARGV[1], ARGV[2])
  redis.call('rename',keys[i],s) 
end 
return table.getn(keys)" 1 'oldkey' 'replace_old' 'replace_new'

执行lua可以执行这么执行,简单的语句,也可以把脚本放到lua文件中执行

redis-cli --eval Rename.lua -a password

也可以安装lua插件 直接运行 lua Rename.lua

批量删除redis key脚本

eval "local keys = redis.call('keys', ARGV[1]) for i=1,#keys,5000 do redis.call('del', unpack(keys, i, math.min(i+4999, #keys))) end return #keys" 0 'gstz:messages:recent:*'

参考文献
https://www.runoob.com/lua/lua-data-types.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值