⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

基于版本号的细粒度缓存失效策略

使用全局版本号与局部版本号组合,精准失效部分缓存而不清空全部。 · 难度:入门 · +10XP

版本化缓存失效方案

常见缓存失效要么全局清空,要么依赖key手动删除。本教程提出一种基于版本号的策略:每个模型或视图设置一个全局版本号(存于redis/cache中),缓存key附带该版本号。当某个模型更新时,递增其全局版本号,所有相关缓存自动失效(因为key变了)。你还可以实现局部版本号(如按用户ID),结合形成组合版本key。教程将演示在post_save信号中更新版本号,以及如何在view中获取当前版本。

from django.core.cache import cache

def get_cached_data(model_name): version = cache.get(f'{model_name}_version', 1) cache_key = f'{model_name}_data_v{version}' data = cache.get(cache_key) if not data: data = expensive_query() cache.set(cache_key, data, 3600) return data

def invalidate_model_cache(model_name): cache.incr(f'{model_name}_version')

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 189 篇
0 完成
🔥 0