2016-05-23 4 views
1

Hier speichere ich Daten in Redis mit PHP. Ich habe einen Cron, um einige Daten mit der Zeit zu erhalten. Dieser Cron wird alle 5 Minuten laufen. Hier verwende ich hSet, um Daten zu speichern.Wie lösche ich Daten von Redis nach 48 Stunden?

$datetime = date("H.i"); 

$redisforhttp2->hSet(MACHINE.':count',$datetime,$count); 

, damit ich Daten erhalten wie diese

[ 
    "13.25": "64", 
    "14.50": "96", 
    "14.52": "65", 
    "14.54": "39", 
    "14.55": "48", 
    "14.56": "68", 
    "15.03": "66", 
    "15.05": "61", 
    "15.07": "60", 
    "15.10": "41", 
    "15.11": "72", 
    "15.14": "53" 
    ] 

Nach zwei Tagen oder ein paar Tage, wird es eine riesige Masse von Daten. also möchte ich Daten von Redis nach 48 Stunden löschen.

if(strtotime($dateFromDatabase." + 48 hours") <= strtotime("now")) 
{ 
    //Deleting data from Redis. 
} 

Also dachte ich hDel ist gut für diese. Aber hier ist der Hash-Schlüssel dynamisch (Zeit). Welche ist die robuste Lösung für diesen Fall? Bitte schlage mich vor.

UPDATE

Diese $datetime für die dynamische grafische Darstellung erzeugt wird. Und hier ist die Zählung HTTP count.

+0

Warum legen Sie keine Zeitüberschreitung für den Schlüssel fest, wenn Sie die Daten speichern, lassen Sie sie erneut automatisch löschen: '$ redisforthttp2-> expire (MACHINE. ': Count', $ expireTime);' –

+0

ist es zum Generieren eines Graphen. –

+0

Warum setzen Sie es nicht nach 48 Stunden ab? – fedorqui

Antwort

1

Um dies zu erreichen, müssen Sie ein wenig Kompromisse bei Ihrer Datenstruktur eingehen. Erstellen Sie dynamische Hashes, beginnend mit Datum, anstatt denselben Hash-Namen zu verwenden. Zum Beispiel 2016-05-21_MACHINE. ': Count' wird Ihr Schlüssel für heute sein, morgen wird es 2016-05-22_MACHINE. ': Count'. Sie können eine crontab für jeden Tag ausführen, um alte Hashes zu löschen.

Wenn Sie glauben, dass vor dem Löschen zu viele Daten generiert werden, versuchen Sie etwas wie diesen Zeitstempel/(1000 * 60 * 60) erhalten Sie unabhängig vom Datum einen eindeutigen Stundenwert. hänge es mit deinem Schlüssel an. Und führen Sie für jede Stunde eine Crontab aus, die Hashes von mehr als 48 Stunden löscht.

Auch müssen Sie Bereiche behandeln, in denen Sie hget und hgetall haben.

Verwandte Themen