Я пишу приложение node.js, которое полагается на redis в качестве основной базы данных, а информация о пользователе хранится в этой базе данных.Хеширование электронной почты (или имени пользователя) для хранения в хэш-буферах redis
В настоящее время у меня есть данные пользователя (адрес электронной почты, пароль, дата создания и т. Д.) В хеше с именем user:(incremental uid)
. И ключ email:(email)
со значением (same incremental uid)
.
Когда кто-то входит в систему, приложение просматривает ключ, соответствующий электронной почте с email:(email)
, чтобы вернуть (incremental uid)
для доступа к данным пользователя с помощью user:(incremental uid)
.
Это прекрасно работает, если количество пользователей достигает миллионов (возможно, но несколько отдаленная проблема), размер моей базы данных резко возрастет, и я начну сталкиваться с некоторыми проблемами.
Я задаюсь вопросом, как хэш по электронной почте до целого числа, которые я могу использовать для сортировки в хэш, как это (псевдокод):
hash([email protected]) returns 1234
1234 % 3 or something returns 1
store { [email protected] : (his incremental uid) } in hash emailbucket:1
Затем, когда мне нужно для поиска этого идентификатора пользователя для электронной почты [email protected]
я использую подобную процедуру:
hash([email protected]) returns 1234
1234 % 3 or something returns 1
lookup [email protected] in hash emailbucket:1 returns his (incremental uid)
Итак, мои вопросы в виде списка:
- Is это практично/есть лучший способ?
- Как я могу отправить электронное письмо на несколько цифр?
- Каков наилучший способ организовать эти хэши в ведрах?
Хотя это теоретически может ответить на вопрос, [было бы предпочтительнее] (// meta.stackoverflow.com/q/8259), чтобы включить основные части ответа здесь , и предоставить ссылку для справки. – Tunaki