Simone Sanfratello

Event based cache invalidation in GraphQL

Stop serving stale data. Use event-based invalidation to keep your GraphQL cache instantly up-to-date.

Event based cache invalidation in GraphQL
#1about 2 minutes

Understanding GraphQL resolvers as cacheable functions

GraphQL resolvers can be treated as pure functions, allowing their results to be memoized and cached based on query arguments.

#2about 5 minutes

Comparing time-based and event-based cache invalidation

Time-based invalidation is simple but can serve stale data, whereas event-based invalidation keeps data synced but is more complex to implement.

#3about 4 minutes

Choosing a storage backend and generating cache keys

A cache can use fast in-memory storage for small, frequent data or a shared Redis instance for larger datasets across multiple nodes.

#4about 4 minutes

Using references for targeted cache invalidation

By tagging cache entries with references to the underlying data entities, you can precisely invalidate them when a write event occurs.

#5about 7 minutes

Live demo of setting up a basic GraphQL server

A Fastify server is configured with the Mercurius plugin to serve a GraphQL schema with user and country data from an in-memory database.

#6about 3 minutes

Live demo of implementing a time-based cache policy

The Mercurius Cache plugin is configured with a time-to-live policy for a query, using onHit and onMiss events to verify its effectiveness.

#7about 5 minutes

Live demo of solving stale data with event invalidation

An invalidation function is added to a mutation resolver, which uses references to clear the relevant user data from the cache upon update.

#8about 3 minutes

Exploring advanced features of Mercurius Cache

Mercurius Cache also supports custom key generation, request deduplication, programmatic invalidation with wildcards, and garbage collection for references.

#9about 4 minutes

Q&A on career advice and GraphQL best practices

Common GraphQL pitfalls are discussed, such as neglecting to use DataLoaders to solve the N+1 query problem.

Related jobs
Jobs that call for the skills explored in this talk.

Featured Partners

From learning to earning

Jobs that call for the skills explored in this talk.

Full Stack Engineer

Full Stack Engineer

Climax.eco
Rotterdam, Netherlands

70-100K
Senior
ETL
UX Design
PostgreSQL
Unit Testing
+1