Ich arbeite daran, Nutzungsmuster zu finden. Für jede Anfrage nehme ich die entsprechende Sekunde des Tages und markiere einen Eintrag. Am Ende werde ich das Nutzungsmuster damit sehen. Was ist die beste Struktur, um dies in Redis durchzuführen?So speichern Sie jede zweite Daten in Redis
Antwort
Sie können es speichern auf drei Arten:
1) SetBit Operationen in einem einzigen Schlüssel
SpeicherungSie SetBit Operationen verwenden können, wenn die Frequenz sehr hoch ist. Das heißt, wenn Sie für fast alle Sekunden markieren, müssen Sie 86400 Werte darin speichern. Aber das wird 0,1 Mb kaum speichern. Auch wenn Sie nur einen Eintrag bei 86400 Sekunde speichern, müssen Sie diese 0,1 Mb verlieren. Aber es hat immer die feste Größe als 0,1 Mb. Passen Sie auch auf, dass Sie die ganze Sache als eine Schnur erhalten können, und Sie sie als Bits umwandeln müssen.
setbit date second
get date
2) setzt
Sie können Sets verwenden, wenn die Frequenz wenig niedrig ist. Es sind also nur die Sekunden in der Menge, in denen die Anfrage kommt.
Sadd date second
smembers date
3) Hashes
Sie können Hashes verwenden, wenn die Zählung für jede Sekunde wissen wollen.
Hincrby date second 1
hgetall date
Machen Sie auch einen Probentest mit all diesen und vergleichen Sie die Größe und Effizienz.
Ich würde einen Hash verwenden, um nach Tag zu gruppieren.
// Set the counter to 0 if it doesn't exist.
HSETNX [DAY] [SECOND] 0
// Increment the counter by 1 each request
HINCRBY [DAY] [SECOND] 1
verwenden Dann HKEYS
oder HSCAN
Ihre Ergebnisse zu erhalten.
Wie kann ich hsetnx machen, wenn die Anfrage nicht in dieser Sekunde eingeht? Ist Hinrby allein genug für diese Operation? –
- 1. So speichern Sie Liste als Wert in Redis
- 2. Speichern Sie mehrere Versionen von Daten in Redis-Cache
- 3. Speicherauslastung in Redis für jede Datenbank
- 4. So speichern Sie große Objekte mit dem Redis-Cache
- 5. So speichern Sie Daten in CoreData
- 6. So speichern Sie JSON-Daten in sqlite
- 7. So speichern Sie mehrere Daten in Ruby
- 8. So speichern und abrufen Sitzung von Redis
- 9. So speichern Sie JavaScript-Array als Redis-Liste
- 10. Speichern von Zeitreihen in Redis
- 11. So speichern Sie Daten in. TXT-Datei in MATLAB
- 12. Ansätze zum Speichern von Geodaten in Redis
- 13. Git: So speichern Sie 'Git Stash' Daten
- 14. So speichern Sie Daten dauerhaft im Smartphone
- 15. So sichern Sie Redis Cluster?
- 16. So speichern Sie konstante Daten im DB
- 17. Speichern Redis Abfrageausgabe
- 18. Playframe jpa Paginierung überspringt jede zweite Seite
- 19. Speichern Sie Snapshot-Daten in XML
- 20. Speichern Sie große Datenrahmen in Redis durch R
- 21. Speichern Sie Benutzersitzung in Redis mit ASP.NET Core in Azure
- 22. So speichern Sie Daten aus Summernote in SQL DB
- 23. So speichern Sie Exif-Daten nach Bitmap-Copression in Android
- 24. So speichern Sie Daten zu NSUserDefaults in prepareForSeque
- 25. So speichern Sie Daten in den Anwendungssupport des Benutzers?
- 26. So speichern Sie Daten ohne Zeiten in Core Data
- 27. So speichern Sie HasMany Associations Daten in CakePHP 3.x
- 28. So speichern Sie Wert in NSSet-Core-Daten (Swift)
- 29. So speichern Sie Daten von http-Service in eckigen Fabrik
- 30. So speichern Sie mehrere Daten in einem Array
Danke für die Antwort. Ich denke, ich werde für die erste Lösung gehen. Zwischen wie bekomme ich alle Bits Werte auf einmal in redis. Alles, was ich sehe, ist der Befehl getbit. –
http://grantmuller.com/be-careful-with-your-redis-bitsets-and-java/ –
Sie müssen das Ergebnis als Datum erhalten und Sie müssen sie in entsprechende Bits in Ihrer App Logik konvertieren. Der obige Link wird Ihnen helfen, dasselbe zu erreichen. –