2016-06-18 11 views
1

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

2

Sie können es speichern auf drei Arten:

1) SetBit Operationen in einem einzigen Schlüssel

Speicherung

Sie 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.

+0

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. –

+0

http://grantmuller.com/be-careful-with-your-redis-bitsets-and-java/ –

+0

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. –

0

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.

+0

Wie kann ich hsetnx machen, wenn die Anfrage nicht in dieser Sekunde eingeht? Ist Hinrby allein genug für diese Operation? –

Verwandte Themen