是否有更好的数据结构用于在Redis中索引此数据?

时间:2013-06-20 15:30:32

标签: data-structures redis

我正在使用Redis在哈希中存储一堆“Foos”:

foo:<id> => {
    name = 'whatever',
    status = 'incomplete|complete|removed',
    user = <user_id>,
    ...
}

我想设置一个索引,以便我可以为特定用户提供具有特定状态的Foos。我想出的最好的事情是使用如此命名的集合:

foo:user:<user_id>:status:<status> => [ <foo_id>, <foo_id2>, ... ]

但这看起来非常笨重,我必须确保跟踪旧状态并在更改状态时将其从一组中删除,以保持数据一致。我可以在这里使用更聪明的结构吗?

1 个答案:

答案 0 :(得分:1)

我认为你考虑存储这些东西的方式很好。您可以随时更改foo:user:<user_id>:status:<status>名称,如果您认为它太长,但这个想法是有道理的。我要添加的一件事是你应该创建一个简短的lua函数,通过从foo获取旧状态,将foo的状态更新为新状态,然后更新旧状态'set和新状态来更新状态'设定。这些操作都是O(1),所以它不会很昂贵(特别是因为它的Lua),并且因为一切都将由一个小脚本管理,所以你不必担心每次都在代码中完成所有操作