在Redis中对值进行分类...我应该使用集合还是密钥?

时间:2013-11-17 21:42:47

标签: redis

长话短说。我有数以千计的条目属于6种可能的类别之一:

foo => category1
bar => category2
baz => category3
lol => category1

存储key =>值看起来很奇怪,因为我将重复这些值很多次。所以我在考虑使用包含每个元素的6个集合。

我的应用收到一个密钥,必须返回它所属的类别。如果我只使用key =>值方法,那就像查询该键一样简单。如果我使用集合,我必须查询每个集合寻找我的项目:

if SISMEMBER category1 "baz";
  return category1
if SISMEMBER category2 "baz";
  return category2
if SISMEMBER category3 "baz";
  return category3

在这种情况下,最好的方法是什么?除了性能和空间考虑因素之外,还有什么我应该考虑的吗?

1 个答案:

答案 0 :(得分:0)

使用hashmap或键值来存储item =>类别关系,然后你可以使用* multiple操作来确定每个项目的类别,这将是一个很大的性能提升比较逐一确定。

示例:

hset('rel', item1, cat1);
hset('rel', item2, cat2);
...
hmget('rel', array(item1, item2)); // return array(item1=>cat1, item2=>cat2);

并使用set / hashmap / zset按类别将项目分组;