lua redis执行lua脚本


lua redis执行lua脚本

           

redis使用命令行、redis-cli客户端、redisTemplate执行lua脚本

       

              

                                    

命令行、客户端执行脚本

         

语法格式

# 直接执行脚本(redis-cli客户端执行)
eval lua-script key-num [key key2 key3 ...] [value value2 value3 ...] 


# 缓存脚本后执行(命令行执行,没有进入客户端)
redis-cli --eval --lua-script [key key2 ...] , [value value2 ...]
 * key与value用逗号间隔,且逗号前后有空格)

          

lua 调用redis命令

redis.call(command, KEYS[1], KEYS[2], ... , ARGV[1], ARGV[2], ...)

# 命令说明
KEYS[1]:第一个key
ARGV[1]:第一个value
KEYS、ARGV不需要一一对应,个数不需要相等

# 示例
redis.call('set', KEYS[1], ARGV[1])
redis.call('get', KEYS[1])

          

示例:redis-cli客户端执行脚本

huli@hudeMacBook-Pro ~ % docker exec -it redis2 bash

-- redis-cli客户端
root@0d79dbff702e:/data# redis-cli

-- KEYS、ARGV名称是固定的,不能随便设置
127.0.0.1:6379> eval "redis.call('set',key[1],arg[1])" 1 set 瓜田李下
(error) ERR Error running script (call to f_c7f25ef16dd21c6a4dc44cf3964041227459f25e): @enable_strict_lua:15: user_script:1: Script attempted to access nonexistent global variable 'key'

-- set key=瓜田李下
127.0.0.1:6379> eval "redis.call('set',KEYS[1],ARGV[1])" 1 key 瓜田李下
(nil)

-- 获取key:没有return,无返回值
127.0.0.1:6379> eval "redis.call('get',KEYS[1])" 1 key
(nil)

-- 调用return,返回key对用的value(瓜田李下)
-- 由于是中文,redis存储的时候进行了序列化
127.0.0.1:6379> eval "return redis.call('get',KEYS[1])" 1 key
"\xe7\x93\x9c\xe7\x94\xb0\xe6\x9d\x8e\xe4\xb8\x8b"

-- 设置key
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值