Überlegen Sie, ob es möglich ist, Benutzerdaten vollständig in Redis zu speichern, anstatt eine SQL-ähnliche Datenbank zu verwenden.
Das erste Problem besteht darin, abzurufen, wann der Benutzer den Benutzernamen und das Passwort eingibt.
Die Verwendung der Tastenbefehle ist absolut unmöglich, es ist schrecklich.
Die vorgesehene Struktur ist wie folgt:
每一个用户数据存储为一个hash类型:
key user:info:unique-identification(int or uuid)
hash-key-email: hash-value-email
hash-key-cellphone: hash-value-cellphone
hash-key-password: hash-value-password
hash-key-nickname: hash-value-nickname
hask-key-right01: hash-value-right01
……
用hash类型存储email=>unique-identification检索数据
key email:index
hash-key-valueOfEmial: hash-value-unique-identification
用hash类型存储cellphone=>unique-identification检索数据
key cellphone:index
hash-key-valueOfCellphone: hash-value-unique-identification
Bestimmen Sie, ob der Benutzer eine E-Mail-Adresse oder ein Mobiltelefon eingibt
Verwenden Sie den Befehl hget, um die entsprechende eindeutige Identifikation aus den entsprechenden Daten zu erhalten
Wenn hget Daten erhält, verwenden Sie user:unique-identification als Schlüssel, um Benutzerdaten zu erhalten
Vergleichen Sie das Passwort. Wenn die Überprüfung konsistent ist, erstellen Sie die entsprechende Sitzung und die entsprechenden Cookies und die Anmeldung ist abgeschlossen.
Bedenken Sie die Probleme, auf die Sie stoßen werden:
Die Antwortzeit von hget ist akzeptabel. Dies ist viel schneller als der Schlüsselbefehl zum Abrufen. Wir haben noch nicht darüber nachgedacht, ob LUA verwendet werden kann, um die Anmeldeüberprüfung mit einem Zugriff abzuschließen.
Allerdings ist die Datenspeicherung zu einem weiteren Problem geworden, das schwer zu lösen ist. Bei 10 Millionen Benutzern sind es nur zwei Abrufdaten etwa 2G Daten.
Bitte sagen Sie mir, ob es eine vernünftigere Struktur zur Lösung dieses Problems gibt. Ich freue mich auf kompetente Beratung.
个人认为,用redis存储肯定不合理,但是是可行的。