从Lua脚本调用的未知Redis命令

时间:2019-04-09 02:16:03

标签: redis lua

我尝试使用“ config get”命令获取lua中的redis状态度量之一,但获取“从lua脚本调用的未知Redis命令”,我不知道为什么?

127.0.0.1:6379> eval "return redis.call('config get','lazyfree_pending_objects')" 0
(error) ERR Error running script (call to f_4e7351811a87a6961eb6fe85622dce826bbc681c): @user_script:1: @user_script: 1: Unknown Redis command called from Lua script
127.0.0.1:6379> eval "return redis.call('config', 'get','lazyfree_pending_objects')" 0
(empty list or set)
127.0.0.1:6379> eval "return redis.call('config', 'get','used_memory_dataset')" 0
(empty list or set)
127.0.0.1:6379> eval "return redis.call('config', 'get used_memory_dataset')" 0
(error) ERR Error running script (call to f_25423fef37dc24142677d59a564f5b664f9e0f45): @user_script:1: ERR CONFIG subcommand must be one of GET, SET, RESETSTAT, REWRITE

2 个答案:

答案 0 :(得分:2)

您的代码有2个问题。

对于config get xxxconfig是命令,get是子命令,xxx是配置字段。因此,当使用Lua脚本调用它时,应使用redis.call('config', 'get', 'xxx')

如果将其称为redis.call('config get', 'xxx'),则Redis将以config get作为命令,这是 UNKNOWN命令。如果将其称为redis.call('config', 'get xxx'),则Redis将以get xxx作为子命令,这也是无效的。

另一个问题是lazyfree_pending_objectsused_memory_dataset不是配置,而是系统信息。您应该改用INFO命令。

答案 1 :(得分:1)

我有同样的问题。我将python redis == 2.10.5升级到redis == 3.5.3。后开始出现此问题。

我猜是因为最新的python redis软件包不支持Redis服务器(Linux软件包)版本。

我已将linux Redis服务器软件包升级到4.0.9,并且可以使用。

记住要重新启动系统。