Database 使用redis中的evalsha调用lua存储过程时出现问题

Database 使用redis中的evalsha调用lua存储过程时出现问题,database,stored-procedures,lua,redis,Database,Stored Procedures,Lua,Redis,我试图使用Redis中存储的lua脚本作为存储过程 我希望能够在Redis中存储这些脚本一次,并在需要时查找和调用它们 我已经能够使用redis cli将这些函数添加到:function:keyspace,如下所示 redis-cli > SET :function:f1 "redis.call('SELECT', 0);local data=redis.call('HGETALL','key:{'..ARGV[1]..'}'); print('f1'); print(ARGV[1]);

我试图使用Redis中存储的lua脚本作为存储过程

我希望能够在Redis中存储这些脚本一次,并在需要时查找和调用它们

我已经能够使用redis cli将这些函数添加到:function:keyspace,如下所示

redis-cli
> SET :function:f1 "redis.call('SELECT', 0);local data=redis.call('HGETALL','key:{'..ARGV[1]..'}'); print('f1'); print(ARGV[1]); return data;"
> SET :function:f2 "redis.call('SELECT', 0); local data=redis.call('HGETALL','key:{'..ARGV[1]..'}'); print('f2'); print(ARGV[1]); return data;"
> SET :function:f3 "redis.call('SELECT', 0);local data=redis.call('HGETALL','key:{'..ARGV[1]..'}'); print('f3'); print(ARGV[1]); return data;"
我还能够使用下面的脚本加载命令来构建一个可以查找这些命令的脚本

SCRIPT LOAD "local f=loadstring(redis.call('get',':function:' .. KEYS[1]));return f()"
这个脚本加载命令为我提供了一个SHA键,我可以使用它调用其中一个存储函数,我可以从命令行运行它,如下所示

redis-cli SCRIPT LOAD "local f=loadstring(redis.call('get',':function:' .. KEYS[1]));return f()"
#returns:
"31b98f9ad6a416c27e5af91ff4af12235d4da385"
然后我可以从redis cli调用其中一个函数

redis-cli
> evalsha 31b98f9ad6a416c27e5af91ff4af12235d4da385 1 f3 1234567890
但我总是犯错误

(error) ERR Error running script (call to f_ae7d0c88e2be3f907cc9a4f5943817bc380bf68e): @user_script:1: user_script:1: bad argument #1 to 'loadstring' (string expected, got boolean)

有什么想法吗?建议?

您必须弄坏键或
redis.
名称空间

Josiah Carlson刚刚为此发布了一个python包

见:和

约西亚还将该包裹添加到


希望这有帮助,TW

查看此链接以了解归属: