Memcached 传输协议精讲
Memcached 传输协议精讲
从协议格式到生产实践,系统掌握 Memcached 通信机制。
课程简介
Memcached 是一款高性能、分布式的内存对象缓存系统,广泛应用于 Web 后端以加速动态数据库驱动的网站。理解其传输协议是:
- 开发自定义客户端库的前提
- 进行性能调优和故障排查的基础
- 构建代理层或扩展功能的关键
本教程共 10 章,从协议概述到生产最佳实践,层层递进,配合可运行的代码示例,适合后端开发者、中间件工程师和 SRE 阅读。
章节目录
| 章节 | 文件 | 主题 |
|---|---|---|
| 01 | Memcached 协议概述 | 文本协议 vs 二进制协议、整体架构 |
| 02 | 文本协议详解 | 文本协议格式、命令语法、响应格式、错误处理 |
| 03 | 核心命令总览 | 存储、获取、删除、递增递减、统计命令 |
| 04 | 存储命令深入 | set/add/replace/append/prepend/cas/flags/TTL |
| 05 | 检索命令深入 | get/gets/批量获取/值格式/返回顺序 |
| 06 | 二进制协议基础 | 请求头/响应头/操作码/状态码 |
| 07 | 二进制协议命令 | 各操作对应的二进制帧格式 |
| 08 | Meta 协议 | meta get/meta set/meta delete 及高级特性 |
| 09 | 代理与分布式 | 代理实现、连接池、分片、一致性哈希、负载均衡 |
| 10 | 最佳实践 | 协议选择、客户端开发、性能优化、安全加固 |
前置要求
- 操作系统: Linux / macOS / Windows (WSL2)
- Memcached: 1.6.x 及以上版本(Meta 协议需要 1.6+)
- 编程语言: 示例代码以 Python 为主,部分章节提供 Go / Shell 示例
- 基础概念: 了解 TCP/IP、HTTP 缓存、键值存储的基本概念
快速开始
# 安装 Memcached(Ubuntu/Debian)
sudo apt update && sudo apt install -y memcached libmemcached-tools
# 启动服务(默认监听 11211)
memcached -d -m 64 -p 11211 -u nobody -l 127.0.0.1
# 验证连接
echo "version" | nc 127.0.0.1 11211
# 安装 Python 客户端
pip install pymemcache python-memcached
术语约定
| 术语 | 说明 |
|---|---|
| Item | Memcached 中缓存的一个键值对 |
| Slab | 内存分配器中的固定大小分组 |
| CAS | Compare-And-Swap,乐观锁机制 |
| Opcode | 二进制协议中的操作类型码 |
| Opaque | 二进制协议中客户端自定义的不透明标识 |
| CAS Unique | 用于 CAS 操作的唯一版本标识符 |
| TTL | Time To Live,缓存过期时间 |