求助:通过netcat/telnet执行Memcached的set命令失败如何解决?
Memcached set命令报CLIENT_ERROR bad data chunk的解决方案
问题根源:Mac上的
nc工具默认发送LF(\n)换行符,而Memcached协议要求命令和数据行必须以CRLF(\r\n)结尾,导致协议解析错误,触发数据块校验失败。解决方案1:使用
printf构造带正确CRLF的命令,通过管道发送给Memcached:
printf "set tutorialspoint 0 900 9\r\nmemcached\r\n" | nc localhost 11211
执行后应返回STORED表示成功。
- 解决方案2:改用
telnet工具连接(默认处理CRLF):
telnet localhost 11211
进入交互模式后输入:
set tutorialspoint 0 900 9 memcached
同样会返回STORED确认成功。
- 额外排查步骤:
- 启动Memcached时加
-v参数查看详细日志,确认请求解析过程:memcached -v - 确认输入的value字节数与
set命令中指定的bytes参数完全一致(memcached是9个ASCII字符,对应9字节,参数本身无问题)。
- 启动Memcached时加
内容的提问来源于stack exchange,提问作者StaticMethod
相关产品推荐
相关产品推荐

