您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在Redis中进行“ GROUP BY”

如何在Redis中进行“ GROUP BY”

你可以这样做

在名为script.lua的lua脚本中

local hash_val = redis.call('hgetall',KEYS[1])
local result = {}
for i = 0 , #hash_val do
    if hash_val[i] == ARGV[1] then
        table.insert(result,hash_val[i-1])
        table.insert(result,hash_val[i])
    end
end
return result

lua通过序列key0,val0,key1,val1等获取哈希值…

然后您可以这样称呼它:

redis-cli  eval "$(cat script.lua)" 1 "my_hash" 1

您将拥有 :

1) "foo"
2) "1"
3) "bar"
4) "1"

有关eval函数的更多信息,请参见此处

如在评论中的deltheil所说,仅检查值而不进行不必要的检查,因为哈希请求的呈现为key,values,key,value等,所以您可以按2步执行for循环:

local hash_val = redis.call('hgetall',KEYS[1])
local result = {}
for i = 2 , #hash_val, 2 do
    if hash_val[i] == ARGV[1] then
        table.insert(result,hash_val[i-1])
        table.insert(result,hash_val[i])
    end
end
return result
其他 2022/1/1 18:21:03 有420人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶