高并发接口的性能瓶颈,多时候不是代码慢,是数据库撑不住。Memcached就挺适合用来干这个活儿,把频繁访问的数据放进内存里,响应也快,代码也简单。

Memcached 的 C/S 架构比较灵活,客户端丢个求,服务端就能立刻从内存里捞出结果。你想扩展,直接加节点也不难,还能搭配一致性哈希减少数据迁移,挺省心。

事件用的是libevent,专门对付高并发的,几千个连接照样不慌,关键是不用每次都开线程,系统资源省不少。

内存分配这一块,Memcached 用的是 slab 方式,按固定大小切块,避免碎片问题。像缓存用户信息、商品列表、接口结果这些,用它都挺合适。

安装的话,走一套老三样:./configuremakemake install,熟悉的流程。启动命令也不复杂:

memcached -m 64 -p 11211 -u nobody -l 127.0.0.1

你可以控制内存大小、端口、运行用户和监听地址。

客户端连接也简单,拿PHP举个例子:

//连接服务器
$memcached = new Memcached();
$memcached->addServer('localhost', 11211);
//写入缓存
$memcached->set('foo', 'bar', 3600);
//读取缓存
echo $memcached->get('foo');

一两行搞定,开发效率还挺高。

想用好它,几个技巧得记住:设置 TTL控制数据过期时间;多服务时记得用一致性哈希;调试就上telnet或看些监控工具。

如果你项目里有些读多写少的数据,或者接口响应想再快点,不妨试试Memcached。要是你对分布式缓存系统感兴趣,也可以看看这篇Memcached 分布式缓存系统详解