如何在ioredis中使用sort命令?遇sort_ro未知命令错误求助
解决Redis
sort_ro未知命令错误 问题根源
sort_ro是Redis 7.0版本才新增的只读SORT命令变体,如果你的Redis服务器版本低于7.0,就会触发ERR unknown command错误。ioredis可能会自动尝试使用这个只读命令(比如连接配置为只读模式时),但你的环境不支持它。
解决方案
1. 检查Redis版本
先确认你的Redis版本:
- 终端执行:
redis-server --version - 或在Redis CLI中执行:
INFO server,查看redis_version字段
如果版本低于7.0,执行以下步骤:
2. 强制使用标准SORT命令
替换原sort方法调用,直接用sendCommand发送标准SORT命令:
await ioredis.sendCommand([ 'SORT', itemsByViewsKey(), 'BY', 'nosort', 'LIMIT', '0', '10', 'GET', `${itemsKey("*")}->name`, `${itemsKey("*")}->views`, order ]);
3. 检查ioredis连接配置
如果你的ioredis连接开启了readOnly或readOnlyMode选项,会自动优先使用只读命令变体。检查并关闭该配置:
const redis = new Redis({ // 其他连接配置 readOnly: false, // 确保此选项为false });
4. 验证键名格式
错误日志中显示的键名是items#*->name,请确认itemsKey函数返回的键前缀是否符合预期(比如是否应为items:而非items#)。Redis哈希字段的正确语法是键名->字段名,需保证格式无误。
内容的提问来源于stack exchange,提问作者BraveEvidence
相关产品推荐
相关产品推荐

