gpt4 book ai didi

redis - 有没有一种方法可以只使用 Lua 中大于 int 的散列中的 HGETALL 值?

转载 作者:可可西里 更新时间:2023-11-01 11:23:22 24 4
gpt4 key购买 nike

我试图通过 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”

最佳答案

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 时将它们放入列表中。

The return statement is used to return values from a function or a chunk (which is an anonymous function).

这意味着如果您返回,您正在编写的任何函数都将结束。

因此,如果您想处理多个条目,那么在循环中使用它并不是一个真正的选择。

尝试类似的东西

   -- 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

关于redis - 有没有一种方法可以只使用 Lua 中大于 int 的散列中的 HGETALL 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57108702/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com