My setup is a 3 masters, 3 slaves Redis cluster, version 7.x.
I created a simple Lua based function as:
#!lua name=loggerLib
local function logMsg(keys, args)
redis.log(redis.LOG_NOTICE, 'Hello!');
end
redis.register_function('logMsg', logMsg)
and loaded it as
cat loggerLib.lua | redis-cli -c -p 7000 -x FUNCTION LOAD REPLACE
However, when I execute it from the redis command prompt as
127.0.0.1:7002> FCALL logMsg 1
I see the error:
(error) ERR Function not found
What am I doing wrong here?
When I run it as
127.0.0.1:7000> FCALL logMsg 1 a
I see the error
-> Redirected to slot [15495] located at 127.0.0.1:7002
(error) ERR Function not found
Because you call
FUNCTION LOADon one node (127.0.0.1:7000), while callFCALLon another node (127.0.0.1:7002). The function is only loaded on 127.0.0.1:7000, and the other node does't have the function loaded.You need to call
FUNCTION LOADon every node in your Redis Cluster.Because the key that your function tries to operate, located on node 127.0.0.1:7002, and your client is redirected to it, and again, it doesn't have the function loaded.