SuperAPI AI 工具集

memcached

数据与分析

查看项目

更新于 10-15 21:49

技能介绍

Memcached 是一个高性能的分布式内存对象缓存系统,定位比 Redis 更简单,核心用途是在内存中做键值缓存,存储字符串或序列化对象。

用途:适合高吞吐的内存键值缓存,例如缓存数据库查询结果、HTML 片段和会话令牌,可获得亚毫秒级延迟;也适合纯临时性缓存,即在内存压力下允许按 LRU 淘汰的数据;以及多核服务器上的多线程缓存扩展和简单键值查找。

主要能力:采用固定 slab 分配内存以减少操作系统内存碎片,slab 类按块大小划分,最大条目默认 1MB;客户端通过一致性哈希(Ketama)做路由,实现集群水平扩展;二进制协议提供 CAS(Check-and-Set)与 INCR 等原子操作,支持线程安全计数与乐观并发控制。

使用方式:可通过 Telnet 接口操作,例如 set mykey 0 60 4 后跟数据,返回 STORED;get mykey 返回 VALUE 与数据。客户端示例(Node.js)使用 memcached 包连接多个节点,配置 retries、retry、remove 等参数,用 set 设置带过期时间的值。常见模式是 Cache-Aside:先查缓存,未命中再查数据库并回填缓存并设置 TTL。

最佳实践:使用 Ketama 一致性哈希;为条目设置合理过期时间;根据条目分布调整 slab 与 -f 增长因子;启用 SASL 认证并配合私有子网防火墙。不要存储超过 1MB 的条目,不要把 Memcached 当作持久化数据库(重启即丢失数据),不要将 11211 端口暴露到公网,以免 UDP 反射放大攻击。

限制与排错:条目过大可压缩或使用 -I 2m 启动;淘汰率高可增大 -m 内存或优化 TTL;连接超时需检查线程池与防火墙并扩展集群。官方文档与更多细节见 Memcached Wiki。