Ist es möglich, in Redis TTL (Time to Live) setzen für einen bestimmten Schlüssel nicht, aber für ein Mitglied für einen Satz?TTL für einen Satz Mitglied
mir eine Struktur für Tags vorgeschlagen durch Redis Dokumentation verwendet - die Daten sind einfach Schlüssel-Wert-Paare, und die Etikett sind Sätze Schlüssel entsprechend jeden Tag enthalten, z.B.
> SETEX id:id_1 100 'Lorem ipsum'
OK
> SADD tag:tag_1 id:id_1
(integer) 1
Der Schlüssel id:id_1
wie erwartet ablaufen, aber ich nicht eine effiziente Art und Weise finden Sie in der entsprechenden aus dem tag:tag_1
Satz zu entfernen.
Ein Weg, ich kam mit einem Cron-Job mit einem Skript, die abgelaufenen Schlüssel aus den Sätzen in regelmäßigen Abständen entfernen würde - durch Hinzufügen aller Tag-Namen zu einem anderen Satz und dann durchlaufen alle Tags, dann alle entsprechenden IDs Tag und prüfen, ob entsprechende Taste vorhanden ist - wenn nicht, SREM
aufrufen.
Ich glaube nicht, dass es ein effizienter Weg sein, und ich würde möglicherweise die Tags so sauber wie möglich halten möchte, weil die Größe der Sätze wahrscheinlich Leistung des Suchens durch mehrere Tags (SINTER
) auswirken wird. Gibt es einen "inneren" Weg?
Ja, es ist ein anständiger Weg und ich werde wahrscheinlich das Problem mit etwas Ähnlichem behandeln. Da die Existenz von abgelaufenen Mitgliedern in Tag-Sets auf keine andere Weise ein Problem darstellt als die Performance, werde ich höchstwahrscheinlich ein periodisch laufendes Cron anstelle eines Deamons verwenden - um Umfragen auf ein ausreichendes Minimum zu beschränken. – Przemek