Jest to tak proste, jak każdemu użytkownikowi przechowywanie dwa razy. Raz za pomocą klucza id i raz za pomocą klucza nazwy użytkownika.
Bardziej kompaktowym sposobem na zrobienie tego pod względem pamięci jest posiadanie nazwy użytkownika kluczem do identyfikatorów, więc zapytanie o nazwę użytkownika powinno wyglądać następująco: zapytanie według nazwy użytkownika, id; wpisz identyfikator, uzyskaj informacje.
Niestety, nie ma dobrego sposobu na wpisanie tych samych rzeczywistych danych za pomocą dwóch różnych kluczy.
Na przykład, jeśli chcesz dodać nowego użytkownika, a następnie zapytać o nim:
redis 127.0.0.1:6379> HMSET id:4532143215432 username davejlong email [email protected]
OK
redis 127.0.0.1:6379> HMSET user:davejlong id 4532143215432 email [email protected]
OK
redis 127.0.0.1:6379> HGET id:4532143215432 username
"davejlong"
redis 127.0.0.1:6379> HGET user:davejlong id
"4532143215432"
redis 127.0.0.1:6379> HMGET user:davejlong email id
1) "[email protected]"
2) "4532143215432"
redis 127.0.0.1:6379> DEL user:davejlong
(integer) 1
redis 127.0.0.1:6379> DEL id:4532143215432
(integer) 1
Zauważ, że gdy tworzę użytkownika, używam HMSET dwukrotnie. Teraz mogę zapytać o nazwę użytkownika lub id. Też muszę usunąć oba klucze teraz.
Umyśliłem do tego z "bardziej zwartym sposobem na zrobienie tego ...", ale było zbyt leniwy, aby go wypisać. +1 –
@philpirozhkov który ... –
Przepraszam, że przegapiłem punkt, ponieważ nie dodajesz możliwości wyszukiwania pocztą. 'SET user: [email protected] 1' i jesteś w stanie znaleźć pocztą –