Voor schaalbare caching bij het werken met gedistribueerde IT-systemen is het zinvol om gebruik te maken van gedistribueerde caches (Redis Cluster, Memcached Cluster). Ze ondersteunen sharding, replicatie en kunnen de belasting automatisch balanceren tussen knooppunten.
De cache-laag wordt geïmplementeerd bovenop een neutrale client-API. Bij veranderingen in de belasting in de cluster worden automatisch knooppunten toegevoegd of verwijderd (automatische schaling).
Voorbeeld: een dynamisch aanpassend Redis Cluster met gebruik van een client die automatisch nieuwe knooppunten ontdekt.
import rediscluster rc = rediscluster.RedisCluster(startup_nodes=[{"host": "127.0.0.1", "port": "7000"}]) rc.set('key', 'value')
Belangrijkste kenmerken:
Biedt Memcached in cluster-modus failover-bescherming bij een knooppuntuitval met behoud van gegevens?
Nee. Memcached slaat gegevens niet op bij herstart of uitval van een knooppunt. Voor persistentie is het beter om Redis te gebruiken.
Kan ik gegevens in cache opslaan die zeer vaak veranderen (bijvoorbeeld met een echte levensduur < 1 seconde)?
Dat is inefficiënt - het beheren van oude versies zal moeilijker zijn, vaak is het beter om zulke objecten helemaal niet in cache te plaatsen.
Zal een ongeldige cache (stale cache) invloed hebben op de integriteit van gegevens?
Dat kan invloed hebben. Het is aan te raden om een mechanisme voor gedwongen invalidatie te implementeren (bijvoorbeeld via pub/sub of een evenementenmechanisme) om het risico op desynchronisatie te verminderen.