You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Bug]: Redis数据key含有非法utf-8字符时,报错 Cannot convert from UTF-8- TypeError #485
Activity
fix(redis): 键名含非法 UTF-8 时列表加载、读取与删除不再失败(#485)
feigeCode commentedon Oct 31, 2026
已修复,改动在
dev分支(e982a939e),会随下一个版本发布。原因:Redis 的
SCAN/KEYS回复原先按Vec<String>解析,redis-rs 会对每个键做严格 UTF-8 校验;遇到 JDK 序列化等二进制键就直接抛TypeError: Cannot convert from UTF-8,导致整页列表加载失败(日志里的key scan failed)。修法:新增二进制安全的 key 编解码(
crates/redis-runtime/src/key_codec.rs)——普通文本键原样透传,二进制键以\xNN转义形态显示;列表按字节解析,所有下发命令的入口(查看、改 TTL、重命名、删除等)在命令边界还原成真实字节。所以这类键现在能正常列出、点开查看和删除。验证:
cargo test -p redis-runtime32 passed(含真实 Redis 上的端到端用例:写入二进制键 → SCAN 列出 → 打开读到值 → DEL 成功 → 再扫不到),cargo test -p redis_view --lib80 passed。