gpt4 book ai didi

redis - Redis中高效的索引类型操作

转载 作者:IT王子 更新时间:2023-10-29 06:01:45 26 4
gpt4 key购买 nike

我正在尝试在 Redis 中创建一组索引,用于执行 AND 操作。

像这样:

inx:haircolor:blonde = set(key1,key2,key3)
inx:eyecolor:blue = set(key1,key2)

而且我可以使用 sinter 找到所有金发蓝眼的 key 。

我有这样的哈希:

key1: name=Rick haircolor=blonde eyecolor=blue

获取结果键并检索匹配哈希的最快方法是什么。

这只是为了使其更容易理解的演示数据,我用它来存储分析,我需要做一些大量的键查找。

我能想到的 2 个选项是 pipelining multi gets + exec或使用 Lua 脚本来避免通过网络发送一堆 key 。

如果有更好的方法来存储对象数据并为其编制索引,或者有一种有效的方法来提取所有这些哈希值而无需通过网络发送一堆 ID...请填写!

编辑

我最终使用了 LUA 脚本(使用 redis 脚本分支)

local fkeys = redis.call('sinter', unpack(KEYS))
local r = {}
for i, key in ipairs(fkeys) do
r[#r+1] = redis.call('hgetall',key)
end
return r

这使所有处理都在数据库端进行。

最佳答案

获取键列表然后执行某些操作以获取值几乎是处理此问题的唯一方法。它看起来确实是实验性 Lua 脚本的一个很好的用例,尽管即使没有它,您也可以相当有效地获取 key ——在您看到真正的性能问题之前,数字需要非常大。

您可能还可以进行其他优化,可能使用临时集或排序集,或者仅从每个哈希中检索单个相关属性,但这在很大程度上取决于您尝试检索的数据类型。

关于redis - Redis中高效的索引类型操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6399730/

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