我目前有一种情况,我们使用REDIS在field-value
中存储字符串hashed set HSET
对。
使用散列集而不是仅使用集的原始原因是,在GUI搜索栏中使用HSCAN
而不是SCAN
可以轻松检索记录,因为更容易获得哈希值的长度在COUNT
字段中使用。
我在Redis文档中读到GET
和HGET
命令都以O(1)时间复杂度执行,但是我的团队成员认为,如果我将所有值存储在单个键中那么它基本上会在HGET
期间返回整个哈希,而不是我需要的单数field-value
。
对于一个虚构但相似的示例:
users
的哈希集。 field:value
对username:email
如果我执行hget users coolguy
时,是返回整个哈希还是仅返回用户coolguy
的电子邮件?
答案 0 :(得分:2)
首先,HSET不是哈希集,它创建一个哈希表。 Redis中哈希表和集合(实际上是哈希集)背后的机制是相同的,区别主要在于哈希表具有值。
要回答您的问题:
如果我执行hget用户coolguy时,是返回整个哈希还是仅返回用户coolguy的电子邮件?
只是该用户的电子邮件。您也可以使用HMGET一次获取多个用户的电子邮件。您提取的每个用户的O(1),或n个用户的O(n)。