跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言java算法

Memcached 核心命令与监控统计详解

Memcached 作为高性能分布式内存缓存系统,通过减少数据库访问提升 Web 应用性能。梳理了核心存储命令(set/add/replace/cas)的区别与适用场景,涵盖检索、数值增减及删除操作。同时详解了 stats 系列命令,帮助开发者监控连接数、命中率、内存占用及 LRU 淘汰情况,为生产环境调优提供依据。

氛围发布于 2025/1/17更新于 2026/9/854 浏览
Memcached 核心命令与监控统计详解
一、介绍

Memcached 是一款自由开源的高性能分布式内存对象缓存系统。它基于内存的 Key-Value 存储模型,适合存放字符串或序列化后的对象。

引入它的核心目的很明确:通过缓存数据库查询结果,减少直接访问数据库的次数,从而提升动态 Web 应用的速度和可扩展性。

二、存储操作

写入数据是基础,但不同场景下需要选择不同的命令,否则可能引发意外覆盖或失败。

Set 最通用的写入命令。如果 Key 已存在,会更新旧值;不存在则新建。

set key flags exptime bytes [noreply] value

成功返回 STORED,失败返回 ERROR。

Add 仅当 Key 不存在时才写入。如果 Key 已存在(包括未过期),操作会被拒绝,原值保持不变。

add key flags exptime bytes [noreply] value

成功返回 STORED,冲突时返回 NOT_STORED。

Replace 与 Add 相反,仅当 Key 已存在时才执行替换。若 Key 不存在,操作失败。

replace key flags exptime bytes [noreply] value

成功返回 STORED,Key 不存在时返回 NOT_STORED。

Append / Prepend 用于在现有值的末尾追加或开头插入数据。注意这要求 Key 必须已存在。

append key flags exptime appendBytes [noreply] value
prepend key flags exptime bytes [noreply] value

成功返回 STORED,Key 不存在时返回 NOT_STORED。

CAS (Check-And-Set) 这是实现乐观锁的关键机制。只有当当前客户端最后一次取值后,该 Key 未被其他客户端修改过,才能写入新值。通过 cas_token(由 gets 获取)进行校验。

cas key flags exptime bytes unique_cas_token [noreply] value

成功返回 STORED,校验失败(并发修改)返回 EXISTS,Key 不存在返回 NOT_FOUND。

三、检索与修改

Get / Gets get 用于获取 Value;gets 除了返回 Value 还会附带 CAS Token,配合 CAS 写入使用。

get key1 [key2 ...]
gets key1 [key2 ...]

成功返回 VALUE key flags bytes value END,不存在则无输出。

Delete 删除指定的 Key。

delete key [noreply]

成功返回 DELETED,Key 不存在返回 NOT_FOUND。

Incr / Decr 对数值型 Key 进行自增或自减。注意 Memcached 内部处理的是十进制 32 位无符号整数。

incr key increment_value
decr key decrement_value

成功返回新值,Key 不存在返回 NOT_FOUND,非数字类型返回 CLIENT_ERROR。

四、统计与监控

生产环境中,了解服务器状态至关重要。stats 系列命令提供了丰富的指标。

基础统计 查看进程号、版本、连接数、命令请求量及命中率等核心指标。

stats

关键字段说明:

  • pid: 进程 ID
  • version: 版本号
  • curr_connections: 当前连接数
  • cmd_get/cmd_set: Get/Set 命令请求次数
  • get_hits/get_misses: 命中/未命中次数(计算命中率)
  • evictions: LRU 淘汰的对象数目
  • limit_maxbytes: 分配的总内存大小

Slab 与 Item 详情 深入查看各个 Slab 分类中 Item 的数量、年龄及淘汰情况。

stats items
stats slabs

这有助于分析内存碎片化程度和不同大小数据的分布。

Item 大小分布 查看所有 Item 的大小区间及其数量,帮助优化内存分配策略。

stats sizes

缓存转储 遍历单个 Slab 的所有 Key,通常用于调试特定键值问题。

stats cachedump slab_id key_size
五、维护清理

Flush All 清空所有缓存数据。支持延迟清理,避免瞬间流量冲击。

flush_all [time] [noreply]

time 参数指定延迟秒数,为 0 则立即执行。

目录

  1. 一、介绍
  2. 二、存储操作
  3. 三、检索与修改
  4. 四、统计与监控
  5. 五、维护清理

更多推荐文章

查看全部
  • 使用回调接口将 AI 小助手接入企业微信群聊机器人
  • Rust 与 WebAssembly 实战:在浏览器与 Node.js 中运行高性能代码
  • 基于 Java 的电子发票 OFD 文件数字签名解析与验真
  • AI视频角色一致性怎么破?2026最新稳定方案大公开
  • C++ 从零实现 K-Means 聚类算法详解
  • 快代理 API 获取私密代理可用时长
  • npm 安装 OpenClaw 时 Git 报错的解决方法
  • 钉钉 Webhook 完全指南:@用户通知与多语言实现
  • Java 运算符
  • ClaudeCode 结合 Figma-MCP 实现前端 UI 1:1 还原指南
  • 实战 AI 大模型与动手构建 AI Agent 技术详解
  • Clawdbot 部署实战:宝塔反代与 BasicAuth 安全加固
  • 前端三年复盘:从迷茫摸索到互联网工程实战
  • Python unstructured 库:非结构化数据解析与结构化处理指南
  • 财务共享的数字化实践
  • Robot Lab 基于 Isaac Lab 的机器人强化学习实战指南
  • Z-Image Turbo 极速生成电商海报实战
  • 语义化 AI 驱动器:提示词工程的技术演进与未来展望
  • iOS 26 Liquid Glass TabBar 适配实战与实现
  • 智能家居中的边缘计算与隐私保护

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online