扩展库 / memcached
memcached
长度感知的文本协议与简洁的单命令客户端。
连接由调用方持有。支持 TCP 分包、任意字节值、总超时和失同步连接中止;不含连接池、自动重连、SASL 或二进制协议。
API
| 函数 | 用途 |
|---|---|
set / add(stream, key, data, exptime=0, timeoutMs=5000) | 写入 string 或 bytes;add 仅在键不存在时写入 |
get(stream, key, timeoutMs=5000, maxReplyBytes=67108864) | 返回 string、bytes 或 null,可收紧回复限额 |
getMany(stream, keys, timeoutMs=5000, maxReplyBytes=67108864) | 返回命中项数组 |
del / touch | 删除或更新过期时间,返回 bool |
stats / version / flushAll | 查询状态、版本;flushAll 清空全部键 |
buildGet / buildSet / buildAdd / buildDelete / buildTouch | 构造文本协议命令 |
buildStats / buildFlushAll / buildVersion | 构造管理命令 |
frameSize(Buffer) / parseResponse(Buffer) | 增量识别并解析完整回复 |
范例
import memcached
Buffer response = Buffer("VALUE key 0 3\r\na\0b\r\nEND\r\n")
var parsed = memcached.parseResponse(response)
assert parsed["items"][0]["data"] == "a\0b"
离线成对范例:examples/basic.xl 和 examples/basic_c.c;真实服务成对范例:examples/live.xl 和 examples/live_c.c。C 侧包含 include/memcached_native.h,拥有型命令字符串使用 xrtFree,返回的值使用 xrtValueRelease。
验收范围
2026-10-27:Windows JIT/AOT 与 Linux GCC ASan/UBSan、JIT/AOT 包级门禁通过,覆盖 C 协议边界和故障分配、本地 TCP 分包/二进制值/错误后复用/半包、超时与限额中止、双语范例同输出。自管理临时 Memcached 服务在两平台通过多键读取、add/touch、stats/version、flushAll 的 C/XLang JIT 与独立 EXE AOT;可选短压另通过四连接各 1000 轮。数小时耐久、生产流量与集群尚未验收,不将短时门禁解释为完整生产级客户端签收。