Ich habe einige Produktdaten, die ich mehrere Versionen von in einem Redis-Cache speichern muss. Die Daten sind JSON-serialisiert. Der Prozess des Erlangens der einfachen (Basis-) Daten ist teuer, und der Prozess des Anpassens in verschiedene Versionen ist ebenfalls teuer, daher möchte ich alle Versionen zwischenspeichern, um sie wo immer möglich zu optimieren. Angenommen, die Anpassung basiert auf einem einzelnen Parameter und ich kann diesen Parameter als Teil des Cacheschlüssels verwenden.Speichern Sie mehrere Versionen von Daten in Redis-Cache
Der Prozess, den ich geplant hatte, zu verwenden, ist die Produktdaten abzurufen etwas wie folgt aus:
if cache contains appropriately customised data for this parameter
return customised data from cache
else
if cache contains basic data
get basic data from cache
else
get basic data from primary data source (expensive)
save basic data to cache for next time
apply customisations to basic data (expensive)
save customised version to cache, using the parameter as a key
return customised product
Das alles funktioniert gut, aber ich versuche jetzt die beste Möglichkeit für unwirksam zu erklären, die Cache-Daten zu arbeiten, wenn Die zugrunde liegende Datenquelle ändert sich. Wenn sich die grundlegenden Produktinformationen ändern, müssen alle benutzerdefinierten Versionen ebenfalls abgelaufen sein. Ich werde benachrichtigt, wenn dies passieren muss.
Beachten Sie, dass die für die Anpassung des Produkts verwendeten Parameter nicht einfach aufzählbar sind. Es gibt eine große Anzahl von möglichen Parametern, so dass das Durchlaufen aller möglichen Schlüssel nicht durchführbar ist.
Redis scheint keine Möglichkeit zu bieten, mehrere Schlüssel mit einem Platzhalter ablaufen zu lassen, und nachdem ich mich bei Redis-Mustern umgesehen habe, bin ich nicht sicher, ob ich mich dem richtigen Weg nähere.
Gibt es eine bessere Möglichkeit, diese Art von angepassten, halbhierarchischen Daten in Redis zwischenzuspeichern, sodass sie abgelaufen sein kann?
Sie können einen Hash verwenden, um alle Versionen der Daten/Dokumente des Produkts zu speichern. Um ungültig zu machen, löschen Sie einfach diesen Schlüssel (und alle darin gespeicherten Versionen sind auf einen Schlag verschwunden). –
Danke! Genau das suche ich. Wenn Sie Ihren Kommentar zu einer Antwort machen, werde ich es akzeptieren. – John