我尝试使用“ 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
答案 0 :(得分:2)
您的代码有2个问题。
对于config get xxx
,config
是命令,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_objects
和used_memory_dataset
不是配置,而是系统信息。您应该改用INFO
命令。
答案 1 :(得分:1)
我有同样的问题。我将python redis == 2.10.5升级到redis == 3.5.3。后开始出现此问题。
我猜是因为最新的python redis软件包不支持Redis服务器(Linux软件包)版本。
我已将linux Redis服务器软件包升级到4.0.9,并且可以使用。
记住要重新启动系统。