从Redis SETS取回数据是否比HSETS更快或更高性能?

时间:2019-03-07 20:10:08

标签: performance memory redis cpu-speed

我目前有一种情况,我们使用REDIS在field-value中存储字符串hashed set HSET对。

使用散列集而不是仅使用集的原始原因是,在GUI搜索栏中使用HSCAN而不是SCAN可以轻松检索记录,因为更容易获得哈希值的长度在COUNT字段中使用。

我在Redis文档中读到GETHGET命令都以O(1)时间复杂度执行,但是我的团队成员认为,如果我将所有值存储在单个键中那么它基本上会在HGET期间返回整个哈希,而不是我需要的单数field-value

对于一个虚构但相似的示例:

  • 我有一个Redis实例,其中包含一个名为users的哈希集。
  • 散列集具有150,000 field:valueusername:email

如果我执行hget users coolguy时,是返回整个哈希还是仅返回用户coolguy的电子邮件?

1 个答案:

答案 0 :(得分:2)

首先,HSET不是哈希集,它创建一个哈希表。 Redis中哈希表和集合(实际上是哈希集)背后的机制是相同的,区别主要在于哈希表具有值。

要回答您的问题:

  

如果我执行hget用户coolguy时,是返回整个哈希还是仅返回用户coolguy的电子邮件?

只是该用户的电子邮件。您也可以使用HMGET一次获取多个用户的电子邮件。您提取的每个用户的O(1),或n个用户的O(n)。