2017-03-29 52 views
0

在Redis中執行Lua腳本時在Redis中發生錯誤。我的困惑是如何使用Redis陣列回覆製作第二個redis.call。我的用例是批量刪除Sorted Set成員。如何在redis.call中使用Lua表?

127.0.0.1:6380> eval "local list = redis.call('zrevrange','test', 50, -1) return redis.call('zrem', 'test', list)" 0 
(error) ERR Error running script (call to f_aa5dddbbb039b576aba5f46a99a268339ca2e9d5): @user_script:1: @user_script: 1: Lua redis() command arguments must be strings or integers 

如何做到這一點?

回答

1

使用Lua的unpack - 即:

local list = redis.call('zrevrange','test', 50, -1) return 
redis.call('zrem', 'test', unpack(list)) 

然而,執行批量從有序集合的基礎上刪除一個範圍,只需使用ZREMRANGEBYRANK

ZREMRANGEBYRANK test 0 -50 
+0

感謝這兩個建議。 – Shital