Неизвестная команда Redis, вызванная из сценария Lua - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь использовать команду «config get» для получения одной из метрик состояния redis в lua, но получаю «Неизвестную команду Redis, вызванную из сценария Lua», я не знаю почему?

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

1 Ответ

2 голосов
/ 09 апреля 2019

У вашего кода 2 проблемы.

Для config get xxx, config - это команда, get - подкоманда, а xxx - поле конфигурации. Поэтому, когда вы вызываете его скриптом Lua, вы должны использовать redis.call('config', 'get', 'xxx').

Если вы называете его redis.call('config get', 'xxx'), Redis примет config get в качестве команды, которая является НЕИЗВЕСТНОЙ командой . Если вы называете это redis.call('config', 'get xxx'), Redis примет get xxx в качестве подкоманды, что также недопустимо.

Другая проблема заключается в том, что lazyfree_pending_objects и used_memory_dataset НЕ являются конфигурацией, а являются системной информацией. Вместо этого вы должны использовать команду INFO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...