2016-11-29 2 views
0

In einer Django-App verwende ich redis, um eine globale sortierte Menge zu verwalten, in der Benutzer-IDs mit der Punktzahl der aktuellen Zeit seit der Epoche gespeichert werden.Trimmen sortiert nach Punktzahl

Nach jeder 11 Minuten, ich bin eine asynchrone Aufgabe ausführen, die die sortierten Satz auf nur Werte, die in den letzten 10 Minuten gespeichert wurden, nichts über.

Würde das Folgendes erreichen? Ich bin nicht sicher über Grenzfälle (zB wird dies sicherstellen, dass alle alten Werte gelöscht werden, oder werde einige Lecks usw.):

time_now = time.time() #current time since epoch 
ten_mins_ago = time_now - (10*60) 
eleven_mins_ago = time_now - (11*60) 
my_redis_server.zremrangebyscore(sorted_set,eleven_mins_ago,ten_mins_ago) 

Antwort

1

ersetzen eleven_mins_ago mit dem String-Wert -inf alles zu löschen, die älter als 10 Minuten sind und vermeiden Sie jedes "Leck" Alter. Ausführliche Informationen und Erläuterungen finden Sie im Abschnitt Exclusive intervals and infinity der Dokumentationsseite ZRANGE.

+0

Das ist eine viel bessere Ressource als Redispy-Dokumente. –