redis - 对 Redis 中的值进行分类......我应该使用集合还是键?

标签 redis

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

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

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

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

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

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

最佳答案

使用hashmap或者key-value来存储item=>category关系,然后可以使用*multiple操作来判断每一个item的类别,相对于一个一个的判断性能会有很大的提升。

例子:

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

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

关于redis - 对 Redis 中的值进行分类......我应该使用集合还是键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20036552/

相关文章:

redis - Redis 中的 SQL IN 运算符(由 FT.Search/FT.Aggregate 提供)

python - 如何禁用 Python RQ 作业的 SyntaxWarning?

java.lang.NoSuchMethodError : in redisson and netty integration 错误

node.js - Redis Pub/Sub 扩展

ruby-on-rails - redis hmget on ruby​​ 的使用方法

c# - ServiceStack Redis获取结构始终返回默认值

集群redis中的spring security redis token 存储

php - 循环遍历 Laravel 集合并使用 Redis 存储到 key

Redis 集群实例比独立实例消耗更多内存?

Redis 键随机消失