从 Redis SETS 获取数据是否比 HSETS 更快或更高效?

Is getting data back from Redis SETS faster or more performant than HSETS?

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

使用散列集而非仅集的最初原因是在 GUI 搜索栏中使用 HSCAN 检索记录比仅 SCAN 更容易,因为它更容易获得长度在 COUNT 字段中使用的散列。

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

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

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

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

回答你的问题:

If when I execute hget users coolguy, is the entire hash getting returned or just the email for user coolguy?

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