121 lines
9.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Memcache Commands
{{#include ../../banners/hacktricks-training.md}}
## Commands Cheat-Sheet
**来自** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached)
支持的命令(官方和一些非官方的)在 [doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt) 文档中有记录。
遗憾的是,语法描述并不清晰,简单的帮助命令列出现有命令会更好。以下是您可以在 [source](https://github.com/memcached/memcached) 中找到的命令概述(截至 2016 年 8 月 19 日):
| Command | Description | Example |
| -------------------- | --------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| get | 读取一个值 | `get mykey` |
| set | 无条件设置一个键 | <p><code>set mykey <flags> <ttl> <size></code><br><br><p>确保在使用 Unix CLI 工具时使用 \r\n 作为换行符。例如</p> <code>printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211</code></p> |
| add | 添加一个新键 | `add newkey 0 60 5` |
| replace | 覆盖现有键 | `replace key 0 60 5` |
| append | 将数据附加到现有键 | `append key 0 60 15` |
| prepend | 将数据前置到现有键 | `prepend key 0 60 15` |
| incr | 将数值键的值增加给定的数字 | `incr mykey 2` |
| decr | 将数值键的值减少给定的数字 | `decr mykey 5` |
| delete | 删除现有键 | `delete mykey` |
| flush_all | 立即使所有项目失效 | `flush_all` |
| flush_all | 在 n 秒内使所有项目失效 | `flush_all 900` |
| stats | 打印一般统计信息 | `stats` |
| | 打印内存统计信息 | `stats slabs` |
| | 打印更高层次的分配统计信息 | `stats malloc` |
| | 打印项目的信息 | `stats items` |
| | | `stats detail` |
| | | `stats sizes` |
| | 重置统计计数器 | `stats reset` |
| lru_crawler metadump | 转储缓存中(所有)项目的大部分元数据 | `lru_crawler metadump all` |
| version | 打印服务器版本。 | `version` |
| verbosity | 增加日志级别 | `verbosity` |
| quit | 终止会话 | `quit` |
#### Traffic Statistics <a href="#traffic-statistics" id="traffic-statistics"></a>
您可以使用命令查询当前的流量统计信息
```
stats
```
您将获得一个列表,其中提供连接数、进出字节以及更多信息。
示例输出:
```
STAT pid 14868
STAT uptime 175931
STAT time 1220540125
STAT version 1.2.2
STAT pointer_size 32
STAT rusage_user 620.299700
STAT rusage_system 1545.703017
STAT curr_items 228
STAT total_items 779
STAT bytes 15525
STAT curr_connections 92
STAT total_connections 1740
STAT connection_structures 165
STAT cmd_get 7411
STAT cmd_set 28445156
STAT get_hits 5183
STAT get_misses 2228
STAT evictions 0
STAT bytes_read 2112768087
STAT bytes_written 1000038245
STAT limit_maxbytes 52428800
STAT threads 1
END
```
#### Memory Statistics <a href="#memory-statistics" id="memory-statistics"></a>
您可以使用查询当前的内存统计信息。
```
stats slabs
```
请提供需要翻译的具体内容。
```
STAT 1:chunk_size 80
STAT 1:chunks_per_page 13107
STAT 1:total_pages 1
STAT 1:total_chunks 13107
STAT 1:used_chunks 13106
STAT 1:free_chunks 1
STAT 1:free_chunks_end 12886
STAT 2:chunk_size 100
STAT 2:chunks_per_page 10485
STAT 2:total_pages 1
STAT 2:total_chunks 10485
STAT 2:used_chunks 10484
STAT 2:free_chunks 1
STAT 2:free_chunks_end 10477
[...]
STAT active_slabs 3
STAT total_malloced 3145436
END
```
如果您不确定您的 memcached 实例是否有足够的内存请始终关注“stats”命令给出的“evictions”计数器。如果实例有足够的内存“evictions”计数器应该为 0 或至少不增加。
#### 哪些键被使用? <a href="#which-keys-are-used" id="which-keys-are-used"></a>
没有内置函数可以直接确定当前的键集。但是您可以使用
```
stats items
```
确定存在多少个键的命令。
```
stats items
STAT items:1:number 220
STAT items:1:age 83095
STAT items:2:number 7
STAT items:2:age 1405
[...]
END
```
这至少有助于查看是否使用了任何密钥。要从已经进行 memcache 访问的 PHP 脚本中转储密钥名称,可以使用来自 [100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html) 的 PHP 代码。
{{#include ../../banners/hacktricks-training.md}}