Redis 7.0.4中Lua脚本启用RESP3协议的正确方法
解决Redis Lua脚本使用RESP3协议的问题
为什么Lua脚本中执行HELLO命令报错
Redis出于安全与连接一致性的限制,HELLO属于连接状态管理类命令,不在Lua脚本允许执行的命令列表中,因此直接在脚本内调用HELLO 3会触发This Redis command is not allowed from script错误。
正确配置RESP3并让Lua脚本使用的方法
1. 持久化启用RESP3(避免重启后回退)
修改Redis配置文件(通常为redis.conf),添加或修改以下配置项:
resp3-enabled yes
保存配置后重启Redis服务,此后所有新建立的连接默认都会使用RESP3协议,无需每次手动执行切换命令。
2. 验证RESP3是否生效
连接Redis后,执行命令查看当前协议版本:
CLIENT INFO | grep proto
若返回proto=3,则说明当前连接已启用RESP3。
3. 让Lua脚本自动使用RESP3返回格式
只要当前连接使用的是RESP3协议,Lua脚本的返回结果会自动遵循RESP3的格式(支持布尔值、空值、集合等原生数据类型的直接返回),无需在脚本内做任何额外操作。
补充:临时切换单个连接到RESP3(仅当前连接有效)
若无需全局启用RESP3,仅针对单个连接临时切换,可在连接后执行:
HELLO 3
但该方式仅对当前连接生效,连接断开后会自动回退到RESP2,适合测试场景。
内容的提问来源于stack exchange,提问作者Mopparthy Ravindranath
相关产品推荐
相关产品推荐

