我正在编写一个node.js应用程序,它依赖redis作为主数据库,用户信息存储在这个数据库中。
我目前将用户数据(电子邮件,密码,创建日期等)放在名为user:(incremental uid)
的哈希中。以及值为email:(email)
的密钥(same incremental uid)
。
当有人登录时,该应用会使用email:(email)
查找与该电子邮件匹配的密钥,以返回(incremental uid)
以user:(incremental uid)
访问用户数据。
这很有用,但是,如果用户数达到数百万(可能,但有些遥远的问题),我的数据库大小将急剧增加,我将开始遇到一些问题。
我想知道如何将电子邮件哈希到一个整数,我可以用它来排序像这样的哈希桶(伪代码):
hash(thisguy@somedomain.com) returns 1234
1234 % 3 or something returns 1
store { thisguy@somedomain.com : (his incremental uid) } in hash emailbucket:1
然后当我需要为电子邮件thisguy@somedomain.com
查找此uid时,我使用了类似的程序:
hash(thisguy@somedomain.com) returns 1234
1234 % 3 or something returns 1
lookup thisguy@somedomain.com in hash emailbucket:1 returns his (incremental uid)
所以,我在列表表格中的问题:
答案 0 :(得分:0)
GET
和INCR
。答案 1 :(得分:-1)
是的,这是在哈希中保存数百万个键值对的更好方法。 您需要为自己创建算法。例如 - 您可以使用时间戳创建一个每1000个值后更改的存储桶值。 。还有很多其他方法。