【问题标题】:Is getting data back from Redis SETS faster or more performant than HSETS?从 Redis SETS 获取数据是否比 HSETS 更快或更高性能?
【发布时间】:2019-07-29 19:50:27
【问题描述】:

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

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

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

所以对于一个虚构但类似的例子:

  • 我有一个带有单个哈希集的 Redis 实例,名为 users
  • 散列集有 150,000 个 field:valueusername:email

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

【问题讨论】:

    标签: performance memory redis cpu-speed


    【解决方案1】:

    首先,HSET 不是哈希集,它创建一个哈希表。 redis中hash表和set(确实是hash set)背后的机制是一样的,区别主要在于hash表是有值的。

    回答你的问题:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-03
      相关资源
      最近更新 更多