键值存储(Key-Value Store)是最常见、最简单的缓存形式之一。下面从概念 → 常见方案 → 使用模式 → 代码示例 → 最佳实践几个层面讲清楚“如何用键值存储做缓存”。
user:1001、page:/home)典型用途:
| 存储 | 特点 | 适用场景 |
|---|---|---|
| Redis | 内存+持久化,丰富数据结构 | 最常用缓存 |
| Memcached | 纯内存,简单 | 高并发读 |
| RocksDB / LevelDB | 本地磁盘 KV | 本地缓存 |
| 内存 Map | 单机最快 | 进程内缓存 |
读流程
1. 查缓存 key
2. 命中 → 返回
3. 未命中 → 查数据库
4. 写入缓存
5. 返回结果
写流程
1. 更新数据库
2. 删除缓存(不是更新)
✅ 优点:简单、稳定
❌ 缺点:有短暂不一致
String key = "user:1001";
User user = redis.get(key);
if (user == null) {
user = userMapper.selectById(1001);
redis.setex(key, 300, user); // 5分钟过期
}
user = redis.get("user:1001")
if not user:
user = db.query_user(1001)
redis.setex("user:1001", 300, json.dumps(user))
✅ 推荐
业务:实体:ID
user:1001
order:20240101:888
❌ 避免
a1
temp
EXPIRE key 300
allkeys-lru(常用)volatile-lrunoeviction现象:查不存在的数据,直击数据库
解决:
现象:热点 Key 失效瞬间高并发
解决:
现象:大量 Key 同时失效
解决:
如果你愿意,我可以:
你主要用在什么场景?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。