阿里云redis集群使用lua脚本

本文介绍了在阿里云Redis集群环境下,如何将单例模式的Lua脚本改造为支持集群模式。由于Redis集群不支持多key查询,通过使用hash tag将相关key映射到同一槽中解决问题。同时,由于Redis.call()的第一个参数必须为字符串,无法直接使用ARGV传参,因此需要将指令直接写入redis.call()中,分别编写了正序和倒序查询的两个脚本。此外,集群规定redis.call内的key只能使用KEYS数组,对拼接key的操作进行了相应调整,以确保脚本能在集群中正确执行。
摘要由CSDN通过智能技术生成

这里写图片描述

redis集群对lua集群的支持有限,阿里的文档描述也比较简单,没有demo,研究了好久才把单例的lua脚本修改成集群版
单例模式的lua脚本

local strs = {};
local result = {};
local resultIndex = 2;
-- ARGV[1]是操作集合的指令,这里对应的是正序还是倒序zrange、zrevrange
-- KEYS[1]是zset的key
-- ARGV[2]是从第几个元素开始
-- ARGV[3]是第几个元素结束
local list = redis.call(ARGV[1], KEYS[1], ARGV[2], ARGV[3])

if(list[1] == nil) then
    return "[]"
end


result[1] = "[";
for index,v in ipairs(list) do
  
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值