栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Redis中进行“ GROUP BY”

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在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])    endendreturn 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])    endendreturn result


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/379367.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号