AI掘金头条新闻系统 (Toutiao News)-设计缓存策略-缓存新闻分类

📅 2026/7/2 19:44:54
AI掘金头条新闻系统 (Toutiao News)-设计缓存策略-缓存新闻分类
1. 获取/写入新闻分类缓存cache/news_cache.py# 新闻相关的缓存方法新闻分类的读取和写入 # key - value from typing import List, Dict, Any, Optional from config.cache_conf import get_json_cache, set_cache CATEGORIES_KEY news:categories # 获取新闻分类缓存 async def get_cached_categories(): return await get_json_cache(CATEGORIES_KEY) # 写入新闻分类缓存: 缓存的数据, 过期时间 # 分类、配置 7200列表 600 详情 1800验证码120 -- 数据越稳定缓存越持久 # 避免所有key同时过期 引起缓存雪崩 async def set_cache_categories(data: List[Dict[str, Any]], expire: int 7200): return await set_cache(CATEGORIES_KEY, data, expire)2. 改造crud/news.py# 获取新闻分类 async def get_categories(db: AsyncSession, skip: int 0, limit: int 100): # 先尝试从缓存中获取数据 cached_categories await get_cached_categories() if cached_categories: return cached_categories stmt select(Category).offset(skip).limit(limit) result await db.execute(stmt) categories result.scalars().all() # ORM # 写入缓存 if categories: categories jsonable_encoder(categories) await set_cache_categories(categories) # 返回数据 return categories3. 运行结果