我正在使用Redis为我的Web应用程序实现社交流和通知系统。我对Redis不是很熟悉,对哈希及其效率有些疑问。
我阅读了这篇精彩的Instagram帖子,并计划实现类似于他们的最小存储解决方案。
正如他们博客中提到的那样,他们像这样做:
为了利用哈希类型,我们将所有媒体ID分成1000个桶(只需取ID,除以1000并丢弃余数)。这确定了我们落入哪个键;接下来,在该键所在的哈希内,媒体ID是哈希内的查找键,而用户ID是值。例如,给定Media ID 1155315,这意味着它落入桶1155(1155315 / 1000 = 1155):
所以,他们不是使用1000个单独的键,而是将其存储在一个具有千个查找键的哈希表中。我的疑问是为什么我们不能增加查找键值到更大。
我阅读了这篇精彩的Instagram帖子,并计划实现类似于他们的最小存储解决方案。
正如他们博客中提到的那样,他们像这样做:
为了利用哈希类型,我们将所有媒体ID分成1000个桶(只需取ID,除以1000并丢弃余数)。这确定了我们落入哪个键;接下来,在该键所在的哈希内,媒体ID是哈希内的查找键,而用户ID是值。例如,给定Media ID 1155315,这意味着它落入桶1155(1155315 / 1000 = 1155):
HSET "mediabucket:1155" "1155315" "939"
HGET "mediabucket:1155" "1155315"
> "939"
所以,他们不是使用1000个单独的键,而是将其存储在一个具有千个查找键的哈希表中。我的疑问是为什么我们不能增加查找键值到更大。
例如:将1155315的媒体ID除以10000后会落入mediabucket:115中
甚至更大。
为什么他们只使用一个具有1000个查找键的哈希桶?为什么不能使用一个具有100000个查找键的哈希桶?这是否与效率有关?
我需要您在我的Web应用程序中实现有效方法的建议。
P.S.请!不要说stackoverflow不适合提出建议,我不知道在哪里寻求帮助。
谢谢!