Ho il modello TicketType
che ha circa 500 istanze.Non valido per più chiavi di cache raggruppate
Cambia solo poche volte a settimana.
Ma se cambia, devo invalidare tutti i valori memorizzati nella cache che utilizzavano i vecchi TicketTypes.
Sfortunatamente alcune chiavi della cache non sono corrette. Contengono dati calcolati.
vedo queste soluzioni:
utilizzare l'argomento version
e aggiornare il valore di versione su un post salvare gestore di TicketType
segnale.
Utilizzare un prefisso comune per tutte le chiavi di cache basate su TicketType. Quindi invalidare tutte le chiavi di cache in un gestore di segnale di salvataggio post.
Credo che ci sia una terza, e migliore ...
Esempio:
TicketType è un albero. La visibilità di TicketTypes è legata alle autorizzazioni. Due utenti potrebbero vedere l'albero in un modo diverso, se hanno permessi diversi. Lo memorizziamo in cache, in base alle autorizzazioni. Le autorizzazioni di un utente vengono serializzate e sottoposte a hashing. La chiave di cache viene creato con la creazione di una stringa che contiene l'hash ed una parte fissa:
hash_key='ticket-type-tree--%s' % hashed_permissions
se l'albero cambia TicketType, abbiamo bisogno di essere sicuri, che nessun dato vecchio viene caricato dalla cache. L'invalidazione attiva non è necessaria, purché non vengano utilizzati vecchi dati.
Potresti per favore elaborare un po 'sul tuo modello e su cosa è memorizzato nella cache, oltre al modo in cui determini le chiavi della cache? – Marcanpilami
@Marcanpilami Ho aggiornato la domanda. – guettli
Mostreresti per favore il tuo modello di TicketType e cosa inserisci esplicitamente nella tua cache? – Charlesthk