$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Caching - A Primer
Search
Ash Christopher
April 15, 2012
6
2.8k
Caching - A Primer
Ash Christopher
April 15, 2012
Tweet
Share
More Decks by Ash Christopher
See All by Ash Christopher
Database Sharding with Django - DjangoCon 2013
ashchristopher
10
2.1k
Testing at Scale
ashchristopher
1
140
Horizontally Scaling Your Database with Django - PyCon.ca (2012)
ashchristopher
10
1.8k
Scaling with Django
ashchristopher
5
2.4k
Django - Don't Do This!
ashchristopher
18
3.3k
Featured
See All Featured
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
9.1k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
170
Exploring anti-patterns in Rails
aemeredith
2
200
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
The Curious Case for Waylosing
cassininazir
0
190
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
91k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
Making Projects Easy
brettharned
120
6.5k
Music & Morning Musume
bryan
46
7k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
75
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Transcript
Caching and Django A Primer @ashchristopher
What is a Cache?
Temporary storage of non-complex data
Provides very fast lookups
Django supports simple caching
Django includes support for a number of cache backends out-of-the-box
Memcache cluster of Memcache servers Database cache uses database table
for cache Filesystem cache file on the local filesystem Local memory cache only good for local development
Easy to make your own cache backend
Extend core.cache.backends.base.BaseCache
Simple caching follows the same pattern
1. Check the cache for data and if found, return
it 2. If data is not in cache - get data from the database, put data in cache then return the data 3. Invalidate cache on data change.
Your system works even if your cache is offline
Some cool projects/apps to help you with it
Django Middleware (per-site and per-view)
Cache Machine
Johnny-Cache
None
Low-level Caching (doing it by hand)
Caching is simple...
... except when it isn’t!
Cache invalidation is hard
Cache invalidation is especially hard at scale
What happens when an expensive operation falls out of cache?
Thundering Herd
Fundamental flaw?
I think so!
Caching doesn’t mean what it used to mean
What you want is probably not caching
Denormalized Data
Actively set new data instead of letting things fall out
of cache
Nothing falls out of cache
Set your data via asynchronous processes
None
No Silver Bullet
Optimizing read speed by adding redundant data
Persistent storage
NoSQL
There is a problem with denormalized data at scale
Denormalized data becomes a requirement
What problem?
Embrace denormalized data
@ashchristopher
[email protected]