Skip to content

Memcached 管理命令

基本命令格式

连接方式

  • Telnet 连接
    bash
    telnet <hostname> <port>
  • Netcat 连接
    bash
    nc <hostname> <port>
  • 示例
    bash
    telnet localhost 11211

命令语法

  • 基本格式command [key] [flags] [exptime] [bytes] [noreply]
  • 参数说明
    • command:命令名称
    • key:数据键
    • flags:存储标志,用于客户端存储附加信息
    • exptime:过期时间(秒),0表示永不过期
    • bytes:数据大小(字节)
    • noreply:可选,不返回响应

统计命令

stats

  • 功能:获取Memcached的基本统计信息
  • 语法stats
  • 输出示例
    STAT pid 12345
    STAT uptime 3600
    STAT time 1234567890
    STAT version 1.6.12
    STAT libevent 2.1.12-stable
    STAT pointer_size 64
    STAT rusage_user 0.123456
    STAT rusage_system 0.067890
    STAT curr_connections 10
    STAT total_connections 100
    STAT connection_structures 11
    STAT reserved_fds 20
    STAT cmd_get 50
    STAT cmd_set 20
    STAT cmd_flush 0
    STAT cmd_touch 0
    STAT get_hits 45
    STAT get_misses 5
    STAT delete_misses 0
    STAT delete_hits 0
    STAT incr_misses 0
    STAT incr_hits 0
    STAT decr_misses 0
    STAT decr_hits 0
    STAT cas_misses 0
    STAT cas_hits 0
    STAT cas_badval 0
    STAT touch_hits 0
    STAT touch_misses 0
    STAT auth_cmds 0
    STAT auth_errors 0
    STAT bytes_read 12345
    STAT bytes_written 67890
    STAT limit_maxbytes 67108864
    STAT accepting_conns 1
    STAT listen_disabled_num 0
    STAT threads 4
    STAT conn_yields 0
    STAT hash_power_level 16
    STAT hash_bytes 524288
    STAT hash_is_expanding 0
    STAT slab_reassign_rescues 0
    STAT slab_reassign_chunk_rescues 0
    STAT slab_reassign_evictions_nomem 0
    STAT slab_reassign_inline_reclaim 0
    STAT slab_reassign_busy_items 0
    STAT slab_reassign_busy_deletes 0
    STAT slab_reassign_running 0
    STAT slabs_moved 0
    STAT lru_crawler_running 0
    STAT lru_crawler_starts 123
    STAT lru_maintainer_juggles 456
    STAT malloc_fails 0
    STAT log_worker_dropped 0
    STAT log_worker_written 0
    STAT log_watcher_skipped 0
    STAT log_watcher_sent 0
    STAT bytes 12345
    STAT curr_items 15
    STAT total_items 20
    STAT slab_global_page_pool 0
    STAT expired_unfetched 0
    STAT evicted_unfetched 0
    STAT evicted_active 0
    STAT evictions 0
    STAT reclaimed 0
    STAT crawler_reclaimed 0
    STAT crawler_items_checked 0
    STAT lrutail_reflocked 0
    STAT moves_to_cold 0
    STAT moves_to_warm 0
    STAT moves_within_lru 0
    STAT direct_reclaims 0
    STAT lru_bumps_dropped 0
    END

stats items

  • 功能:获取各个Slab Class的Item统计信息
  • 语法stats items
  • 输出示例
    STAT items:1:number 10
    STAT items:1:age 3600
    STAT items:1:evicted 0
    STAT items:1:evicted_nonzero 0
    STAT items:1:evicted_time 0
    STAT items:1:outofmemory 0
    STAT items:1:tailrepairs 0
    STAT items:1:reclaimed 0
    STAT items:1:expired_unfetched 0
    STAT items:1:evicted_unfetched 0
    STAT items:1:crawler_reclaimed 0
    STAT items:1:crawler_items_checked 0
    STAT items:1:lrutail_reflocked 0
    STAT items:1:moves_to_cold 0
    STAT items:1:moves_to_warm 0
    STAT items:1:moves_within_lru 0
    STAT items:1:direct_reclaims 0
    STAT items:1:lru_bumps_dropped 0
    END

stats slabs

  • 功能:获取各个Slab Class的详细统计信息
  • 语法stats slabs
  • 输出示例
    STAT 1:chunk_size 48
    STAT 1:chunks_per_page 21845
    STAT 1:total_pages 1
    STAT 1:total_chunks 21845
    STAT 1:used_chunks 10
    STAT 1:free_chunks 21835
    STAT 1:free_chunks_end 0
    STAT 1:mem_requested 320
    STAT 1:get_hits 45
    STAT 1:cmd_set 20
    STAT 1:delete_hits 0
    STAT 1:incr_hits 0
    STAT 1:decr_hits 0
    STAT 1:cas_hits 0
    STAT 1:cas_badval 0
    STAT 1:touch_hits 0
    STAT active_slabs 1
    STAT total_malloced 1048576
    END

stats sizes

  • 功能:获取不同大小Item的统计信息
  • 语法stats sizes
  • 输出示例
    STAT 96 10
    END
  • 说明:表示有10个大小为96字节的Item

监控命令

stats reset

  • 功能:重置统计信息(仅重置部分统计,如cmd_get、cmd_set等)
  • 语法stats reset
  • 注意事项:生产环境谨慎使用,会丢失历史统计数据

stats cachedump

  • 功能:列出指定Slab Class中的键
  • 语法stats cachedump <slab_class> <limit>
  • 参数说明
    • slab_class:Slab Class ID
    • limit:返回键的数量限制
  • 输出示例
    ITEM key1 [32 b; 1234567890 s]
    ITEM key2 [48 b; 1234567890 s]
    END

stats detail

  • 功能:获取详细的命令统计信息
  • 语法stats detail [<on|off|dump>]
  • 参数说明
    • on:开启详细统计
    • off:关闭详细统计
    • dump:输出详细统计信息
  • 输出示例
    DETAIL on
    STAT detail:cmd_get 50
    STAT detail:cmd_set 20
    END

维护命令

flush_all

  • 功能:清空所有缓存数据
  • 语法flush_all [<delay>] [<noreply>]
  • 参数说明
    • delay:可选,延迟清空的时间(秒)
    • noreply:可选,不返回响应
  • 输出OK
  • 注意事项:生产环境谨慎使用,会清空所有缓存数据

version

  • 功能:获取Memcached版本信息
  • 语法version
  • 输出示例VERSION 1.6.12

verbosity

  • 功能:调整日志级别
  • 语法verbosity [<level>]
  • 参数说明
    • level:日志级别(0-3),0表示关闭日志,3表示最详细
  • 输出OK

quit

  • 功能:关闭连接
  • 语法quit

调试命令

stats malloc

  • 功能:获取内存分配统计信息
  • 语法stats malloc
  • 输出示例
    STAT malloc_count 100
    STAT malloc_size 1048576
    STAT free_count 50
    STAT free_size 524288
    END

stats maps

  • 功能:获取内存映射统计信息
  • 语法stats maps
  • 输出示例
    MAP 0: 0x7f1234567000 - 0x7f1234667000 (1048576 bytes)
    END

stats sizes

  • 功能:获取不同大小Item的分布情况
  • 语法stats sizes
  • 输出示例
    STAT 96 10
    STAT 120 5
    END

SASL认证命令

auth list

  • 功能:获取支持的认证机制
  • 语法auth list
  • 输出示例
    MECH plain
    END

auth plain

  • 功能:使用plain认证机制进行认证
  • 语法auth plain <credentials>
  • 参数说明
    • credentials:Base64编码的认证信息,格式为\0username\0password
  • 输出OKERROR

常见问题(FAQ)

Q1: 如何查看Memcached的连接数?

A1: 使用stats命令,查看curr_connections(当前连接数)和total_connections(总连接数)指标。

Q2: 如何查看Memcached的命中率?

A2: 使用stats命令,计算命中率:get_hits / (get_hits + get_misses) * 100%

Q3: 如何查看Memcached的内存使用情况?

A3: 使用stats命令,查看bytes(当前使用内存)和limit_maxbytes(配置的最大内存)指标。

Q4: 如何清空Memcached的缓存?

A4: 使用flush_all命令可以清空所有缓存数据。如果需要延迟清空,可以使用flush_all <delay>命令。

Q5: 如何列出Memcached中的所有键?

A5: 可以使用stats cachedump <slab_class> <limit>命令列出指定Slab Class中的键,需要遍历所有Slab Class才能获取所有键。生产环境谨慎使用,可能影响性能。

Q6: 如何查看Memcached的版本信息?

A6: 使用version命令可以获取Memcached的版本信息。

Q7: 如何调整Memcached的日志级别?

A7: 使用verbosity [<level>]命令可以调整日志级别,0表示关闭日志,3表示最详细。

Q8: 如何查看Memcached的线程数?

A8: 使用stats命令,查看threads指标。

Q9: 如何查看Memcached的命令统计信息?

A9: 使用stats命令可以查看基本的命令统计信息,如cmd_getcmd_set等。使用stats detail dump命令可以获取更详细的命令统计信息。

Q10: 如何重置Memcached的统计信息?

A10: 使用stats reset命令可以重置统计信息,但会丢失历史统计数据,生产环境谨慎使用。