Skutečné úložiště dat a mezipaměť by měly být synchronizovány pomocí třetího přístupu, který jste již popsali ve své otázce.
Když přidáváte data do svého definitivního úložiště (tj. do vaší databáze SQL), musíte tato data zařadit do fronty nějaké servisní sběrnice nebo fronty zpráv a nechat nějakou asynchronní službu provést celou synchronizaci pomocí nějakého procesu na pozadí.
Nechcete se dostat do těchto případů (když nepoužíváte servisní sběrnici a asynchronní službu):
- Zpomalte své požadavky nebo procesy, protože uživatel musí počkat, až budou data uložena ve vaší databázi i mezipaměti.
- Máte riziko selhání během procesu ukládání do mezipaměti a nebudete moci mít zásadu opakování (což je obvykle vestavěná funkce v servisní sběrnici nebo některých frontách zpráv). Toto selhání může také skončit částečným nebo úplným poškozením mezipaměti a nebudete moci automaticky a snadno naplánovat nějakou úlohu k nápravě této situace.
Pokud jde o použití vypršení platnosti klíče Redis, je to dobrý nápad. Protože Redis může vypršet platnost klíčů pomocí svého vestavěného mechanismu, neměli byste implementovat vypršení platnosti klíče z celého procesu na pozadí. Pokud klíč existuje, je to proto, že je stále platný.
BTW, v tomto případě nebudete vždy (pokud klíč nevypršela platnost, znamená to, že by neměl být přepsán). Může to záviset na vaší skutečné doméně.