redis的lua脚本多返回值

如何在redis的lua中返回不同类型的多个返回值?
 lua脚本的函数支持多返回值,若redis调用lua脚本支持多返回值,会使一些开发场景简单。但遗憾的是经过试验,redis不支持这一特性。

测试脚本如下:
test.lua ->
local function test(val)
    return 1, val
end
return test(KEYS[1])

使用redis执行脚本:
redis-cli --eval test.lua 1 3
结果:
(integer) 1

由上可见,redis只返回第一个值。
一种做法是,利用lua的table,将不同类型的值放入table,最后返回table。
测试脚本如下:
test.lua ->
local function test(val)
    local ret1 = {1, 2}
    local ret2 = "hello"
    local ret3 = val
    local ret = {}
    ret[1] = ret1
    ret[2] = ret2
    ret[3] = ret3
    return ret
end
return test(KEYS[1])

执行脚本:
redis-cli --eval test.lua 1 3
结果:
1) 1) (integer) 1
   2) (integer) 2
2) "hello"
3) "1"

可见,结果已经返回。
需要注意的是,使用jedis取结果时,需要将结果以List<Object>接收,之后对每个item转换为相应的类型再处理。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值