首页 > 解决方案 > 从 Redis SETS 获取数据是否比 HSETS 更快或更高性能?

问题描述

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

使用散列集而不只是集的原始原因是HSCAN在 GUI 搜索栏中使用检索记录很容易,而不是SCAN因为更容易获得在COUNT字段中使用的散列长度。

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

因此,对于一个虚构但类似的示例:

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

标签: performancememoryrediscpu-speed

解决方案


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

要回答您的问题:

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

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


推荐阅读