我正试图只获取Lua大于1800的哈希值。我是Lua的新手,我不确定如何从Redis获取值,因为redis.call()方法仅返回1。
这是我的代码。在这里,我的哈希键是“ 1”,“ 2”,“ 3”等,只是为了使其更简单。
for i=1,length do
value = tonumber(redis.call("HGET", KEYS[1], i))
if value >= 1800 then
return redis.call("HGET", KEYS[1], i)
end
end
假设我有一个名为Data的哈希,如下所示:
HGETALL数据 1)“星期一” 2)“ 1802” 3)“星期二” 4)“ 1283” 5)“星期三” 6)“ 3487” 7)“星期四” 8)“ 1899” 9)“星期五” 10)“ 1709” 11)“星期六” 12)“ 1909” 13)“星期日” 14)“ 1799”
我希望当我使用HGETALL方法时,会得到:
1)“星期一” 2)“ 1802” 5)“星期三” 6)“ 3487” 7)“星期四” 8)“ 1899” 11)“星期六” 12)“ 1909”
答案 0 :(得分:0)
for i=1,length do
value = tonumber(redis.call("HGET", KEYS[1], i))
if value >= 1800 then
return redis.call("HGET", KEYS[1], i)
end
end
此代码告诉您的计算机:浏览所有条目并给我第一个> 1802。
如果要获得以上所有值,则有几个选择。
您可以使用HGETALL获得完整的条目列表,然后过滤返回的条目列表,或者获得单个元素并在它们大于等于1800时将它们放入列表中。
return语句用于从函数或函数中返回值 块(这是一个匿名函数)。
这意味着您返回的任何函数都将在返回时结束。
因此,如果您要处理多个条目,那么在循环中使用它并不是真正的选择。
尝试类似
-- create an empty table
local greatValues = {}
for i=1,length do
value = tonumber(redis.call("HGET", KEYS[1], i))
if value >= 1800 then
-- insert any value that is >=1800 into the table
table.insert(greatValues, value)
end
end
-- return the list of results
return greatValues