在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
语法格式(常见) a = 5 -- 全局变量 local b = 5 -- 局部变量 Eval的使用 EVAL script numkeys key [key ...] arg [arg ...] 首先大家一定要知道eval的语法格式,其中: <1> script: 你的lua脚本 <2> numkeys: key的个数 <3> key: redis中各种数据结构的替代符号 <4> arg: 你的自定义参数 ok,可能乍一看模板不是特别清楚,下面我可以用官网的小案例演示一下: eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 username age jack 20 上面这一串代码大概是什么意思呢? 第一个参数的字符串就是script,也就是lua脚本。2表示keys的个数,KEYS[1] 就是 username的占位符, KEYS[2]就是 age的占位符,ARGV[1]就是jack的占位符,ARGV[2]就是20的占位符,,以此类推,,,所以最后的结果应该就是:{return username age jack 20} 是不 是有点像C#中的占位符:{0}呢??? 下面我在Redis中给大家演示一下: [root@localhost Desktop]# redis-cli 127.0.0.1:6379> eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 username age jack 20 1) "username" 2) "age" 3) "jack" 4) "20" 127.0.0.1:6379> 通常境况下,我们不要在redis-cli中直接写lua脚本,这样非常不方便编辑,通常情况下我们都是把lua script放到一个lua文件中,然后执行这个lua脚本,比如 下面这样: 然后我们通过下面命令执行,这种方式和前面介绍的不一样,参数 --eval script key1 key2 , arg1 age2 这种模式,key和value用一个逗号隔开就好了, 最后我们也看到了,数据都出来了,对吧。 [root@localhost Desktop]# redis-cli --eval /usr/redis/sbin/1.lua username age , jack 20 1) "username" 2) "age" 3) "jack" 4) "20" [root@localhost Desktop]#
测试list获取 1. 通过lua脚本获取指定的key的List中的所有数据 local key=KEYS[1] local list=redis.call("lrange",key,0,-1); return list; 这里面的redis.call就是用来执行redis中list的lrange命令,接下来我通过lpush给person塞入三条数据,如下: [root@localhost Desktop]# redis-cli 127.0.0.1:6379> lpush person mary jack peter (integer) 3 127.0.0.1:6379> 然后我们来执行这个lua脚本,效果如下图,是不是很牛逼的感觉???
|
请发表评论