本帖最后由 da11 于 2025-5-15 17:44 编辑
redis使用keys *查询出来的键名含有编码转义错误怎么解决
场景:
redis使用keys *查询出来的键名如下:
id:type:332211:\xe8\x81
最后含有编码转义字符,如果直接exists id:type:332211:\xe8\x81是无法找到的
现在开发人员就需要把这个单独的键删掉,而不删除整个数据库。这时需要以正确的编码显示才能把它删除。
使用redis-cli的--raw选项查看原始字节:(linux命令行下)
redis-cli --raw keys "id:type:332211*"
使用SCAN命令遍历键:
代替KEYS,使用SCAN避免阻塞并准确获取键名:(linux命令行下)
redis-cli --scan --pattern "id:type:332211*"
验证键是否存在:
将键名以十六进制形式传递给EXISTS:(linux命令行下)
echo -e "EXISTS id:type:332211:\xe8\x81" | redis-cli --raw
# 确保echo -e正确转义(在Bash中处理\x)。
删除键的正确方法:
使用redis-cli直接传递原始字节:(linux命令行下)
redis-cli del "id:type:332211:$(echo -e "\xe8\x81")"
如果redis存在密码,不想在明文环境下输入密码,可以直接输入redis-cli --raw命令进入redis即可!
|