---
id: TK-DEC-000
type: decision
example: true
maturity: proven
tags: [cache, redis, memcached, tech-selection]
created: 2026-03-10
last_referenced: 2026-05-05
reference_count: 8
contributors: [alice, bob]
source_project: project-alpha
evidence:
  - project: project-alpha
    date: 2026-03-10
    description: "消息缓存选型讨论"
  - project: project-beta
    date: 2026-04-20
    description: "网关限流模块复用相同选型结论"
  - project: project-gamma
    date: 2026-05-05
    description: "后台管理系统缓存层采用同一方案"
---

# 缓存中间件选型：Redis 而非 Memcached

## 决策

选择 Redis 作为统一缓存中间件，不使用 Memcached。

## 理由

| 维度 | Redis | Memcached |
|------|-------|-----------|
| 数据结构 | 丰富（String/Hash/List/Set/ZSet） | 仅 Key-Value |
| 持久化 | 支持 RDB + AOF | 不支持 |
| 发布订阅 | 原生支持 | 不支持 |
| 原子操作 | Lua 脚本支持 | 仅 CAS |
| 集群方案 | Redis Cluster 原生支持 | 需客户端分片 |

关键决策因素：
1. 项目需要 Hash 结构存储用户会话信息
2. 需要持久化保证服务重启不丢数据
3. 限流模块需要 Lua 脚本保证原子性

## 权衡

- Memcached 在纯 KV 读取场景下性能略优（多线程模型）
- 但团队技术栈统一收益 > 单场景极致性能

## 适用场景

需要缓存中间件选型的新项目。
