⚡ 编程实验室🏗️ 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🎮 游戏🏠 网站首页

MPTT 树结构的 Redis 缓存失效策略

为 Django-MPTT 管理的树状数据设计精确的缓存失效方案,避免全表缓存清除。 · 难度:入门 · +10XP

树缓存失效

MPTT 树中移动或删除节点时,需更新所有子孙节点的 lft/rgt 值,导致大量缓存失效。本教程将展示如何利用 Redis 的 sorted set 存储节点路径深度,结合 Django 信号只为受影响分支生成失效键。你将学习缓存键模式设计(如 'tree:{tree_id}:{node_id}:children')以及使用 pipeline 批量删除。

from django.core.cache import cache
from django.db.models.signals import post_save

@receiver(post_save, sender=Category) def invalidate_category_cache(sender, instance, **kwargs): # 失效当前节点及其父链 parent = instance.parent keys = [f'cat_tree:{instance.tree_id}:root'] while parent: keys.append(f'cat_tree:{parent.tree_id}:{parent.pk}') parent = parent.parent cache.delete_many(keys)

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

🏆 学习排行

加载中...

📊 统计

📖 189 篇
0 完成
🔥 0