Redis 缓存与会话管理有什么不同?
先说出你的答案
定义边界、关键机制、一个反例;P8题再补容量、失败与验证。
查看完整题解
参考回答
直接回答
缓存保存可重建的业务副本以减少重复读取,Spring Session用外部存储承载HTTP会话状态;两者都可用Redis,但目的、键空间、过期和失败影响不同。加一个Redis依赖不会自动让所有查询缓存、所有会话共享,也不能让不同服务天然共用同一身份体系。
讲清原理
缓存需设计键、TTL、更新与失效,并理解Cacheable等代理边界;会话需考虑Cookie、会话ID、命名空间、序列化和登出清理。跨应用共享会话还要求信任、格式和访问策略一致。
Redis故障对缓存可选择受控回源,对登录会话则可能影响认证可用性,不能采用同一“出错就忽略”策略。序列化格式与版本演进也要控制,不默认信任任意对象数据。
例子与易错点
缓存与session建议明确前缀和容量策略,避免普通缓存清理误删会话。此题讲集成边界,API级缓存示例不会声称已经验证Redis集群或跨应用登录。
以下为 Java 21 类成员示例,放入同一外部类中使用,依赖 Boot4.1.2 / Framework7.0.10。使用进程内缓存验证代理命中与失效,不测试Redis、TTL或HTTP会话共享。
public static class Lookup {
int calls;
@org.springframework.cache.annotation.Cacheable("names")
public String name(long id) { calls++;return "user:"+id; }
}
@org.springframework.context.annotation.Configuration(proxyBeanMethods=false)
@org.springframework.cache.annotation.EnableCaching
static class CacheConfig {
@org.springframework.context.annotation.Bean
org.springframework.cache.CacheManager cacheManager() {
return new org.springframework.cache.concurrent.ConcurrentMapCacheManager("names");
}
@org.springframework.context.annotation.Bean
Lookup lookup() { return new Lookup(); }
}
相关题:第 59 题、第 29 题。
和评分标准对照,你能独立回答到哪一步?
自评会安排下一次复习,不保存你的口述内容。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。