Memcached命令
Memcached引擎支持基于TCP(Memcached Text Protocol)的文本协议和二进制(Memcached Binary Protocol)协议,任何兼容Memcached协议的客户端都可以访问DCS。
文本协议
Memcached文本协议通过ASCII文本传递命令,便于用户编写客户端和调测问题,甚至可以直接使用Telnet连接Memcached实例。
Memcached文本协议与二进制协议相比,兼容更多的开源类型客户端,但文本协议不支持认证操作。
 
 
   Memcached实例需要开启免密访问模式后,才能通过文本协议连接。此时Memcached实例的访问将不再受用户名、密码的认证保护。同一VPC内符合安全组规则的任何Memcached客户端均可连接访问Memcached实例,存在安全风险,请谨慎使用。
DCS Memcached实例对文本协议命令的支持情况如表1所示。
| 命令 | 功能 | 是否支持 | 
|---|---|---|
| add | 新增数据 | 是 | 
| set | 设置数据,主要包括新增或者修改数据 | 是 | 
| replace | 更新数据 | 是 | 
| append | 向指定key的value末尾追加数据 | 是 | 
| prepend | 向指定key的value头部追加数据 | 是 | 
| cas | 检查并修改数据 | 是 | 
| get | 查询数据 | 是 | 
| gets | 查询数据详细信息 | 是 | 
| delete | 删除数据 | 是 | 
| incr | 算数增 | 是 | 
| decr | 算数减 | 是 | 
| touch | 修改数据过期时间 | 是 | 
| quit | 断开连接 | 是 | 
| flush_all | 清空数据 
         说明: 
         若提供可选参数delay,则delay取值必须为0。 | 是 | 
| version | 查询服务版本信息 | 是 | 
| stats | 运行统计信息管理 
         说明: 
         当前只支持查询基础统计信息,不支持可选参数操作命令。 | 是 | 
| cache_memlimit | 设置内存使用限制 | 否 | 
| slabs | 查询内部存储结构使用情况 | 否 | 
| lru | 数据过期删除策略管理 | 否 | 
| lru_crawler | 数据过期删除线程管理 | 否 | 
| verbosity | 日志级别管理 | 否 | 
| watch | 运行事件监控 | 否 | 
二进制协议
Memcached二进制协议将命令及所操作的内容按照特定结构进行编码后发送,通过预定的字节串表示命令。
Memcached二进制协议与文本协议相比,功能更多,支持SASL认证更加安全,但可用的客户端数量较少。
DCS Memcached实例对二进制协议命令的支持情况如表2所示。
| 命令编码 | 命令 | 功能 | 是否支持 | 
|---|---|---|---|
| 0x00 | GET | 查询数据 | 是 | 
| 0x01 | SET | 设置数据,主要包括新增或者修改数据。 | 是 | 
| 0x02 | ADD | 新增数据 | 是 | 
| 0x03 | REPLACE | 更新数据 | 是 | 
| 0x04 | DELETE | 删除数据 | 是 | 
| 0x05 | INCREMENT | 算数增 | 是 | 
| 0x06 | DECREMENT | 算数减 | 是 | 
| 0x07 | QUIT | 断开连接 | 是 | 
| 0x08 | FLUSH | 清空数据 
         说明: 
         若提供可选参数delay参数,则delay取值必须为0。 | 是 | 
| 0x09 | GETQ | 查询数据,在出现错误时不返回任何信息。 | 是 | 
| 0x0a | NOOP | 空操作,相当于ping。 | 是 | 
| 0x0b | VERSION | 查询服务版本信息 | 是 | 
| 0x0c | GETK | 查询数据并返回key | 是 | 
| 0x0d | GETKQ | 查询数据并返回key,在出现错误时不返回任何信息。 | 是 | 
| 0x0e | APPEND | 向指定key的value末尾追加数据 | 是 | 
| 0x0f | PREPEND | 向指定key的value头部增加数据 | 是 | 
| 0x10 | STAT | 查询缓存实例的统计信息 
         说明: 
         当前只支持查询基础统计信息,不支持可选参数操作命令。 | 是 | 
| 0x11 | SETQ | 设置数据,主要包括新增或者修改数据。 在成功时不返回任何信息。 | 是 | 
| 0x12 | ADDQ | 新增数据,在成功时不返回任何信息。 | 是 | 
| 0x13 | REPLACEQ | 更新数据,在成功时不返回任何信息。 | 是 | 
| 0x14 | DELETEQ | 删除数据,在成功时不返回任何信息。 | 是 | 
| 0x15 | INCREMENTQ | 算数增,在成功时不返回任何信息 | 是 | 
| 0x16 | DECREMENTQ | 算数减,在成功时不返回任何信息 | 是 | 
| 0x17 | QUITQ | 断开连接 | 是 | 
| 0x18 | FLUSHQ | 清空数据并不返回任何信息 
         说明: 
         若提供delay参数,则delay取值必须为0。 | 是 | 
| 0x19 | APPENDQ | 向指定key的value末尾追加数据,在成功时不返回任何信息 | 是 | 
| 0x1a | PREPENDQ | 向指定key的value头部增加数据,在成功时不返回任何信息 | 是 | 
| 0x1c | TOUCH | 修改数据过期时间 | 是 | 
| 0x1d | GAT | 查询数据同时修改过期时间 | 是 | 
| 0x1e | GATQ | 查询数据同时修改过期时间,在操作失败时不返回任何信息。 | 是 | 
| 0x23 | GATK | 查询数据并返回key,同时修改过期时间。 | 是 | 
| 0x24 | GATKQ | 查询数据并返回key,同时修改过期时间,在操作失败时不返回任何信息。 | 是 | 
| 0x20 | SASL_LIST_MECHS | 获取服务端支持的SASL认证机制 | 是 | 
| 0x21 | SASL_AUTH | SASL认证 | 是 | 
| 0x22 | SASL_STEP | SASL复杂认证后续步骤 | 是 | 
 
    