gpt4 book ai didi

database - 使用 redis 中的 evalsha 调用 lua 存储过程时遇到问题

转载 作者:可可西里 更新时间:2023-11-01 11:22:03 26 4
gpt4 key购买 nike

我正在尝试使用存储在 Redis 中的 lua 脚本作为存储过程。

我希望能够将这些脚本一次性存入Redis,需要的时候可以查询调用。

我已经能够将这些函数添加到 :function: 键空间,使用 redis-cli 添加它们,如下所示,

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 key ,我可以用它来调用这些存储函数之一,我可以从命令行运行它,就像这样,

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)

有什么想法吗?有什么建议吗?

最佳答案

您将不得不破坏 KEYS 或 redis. 命名空间。

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

参见:herehere .

Josiah 还将这个包添加到 Pypi

希望这有帮助,TW

关于database - 使用 redis 中的 evalsha 调用 lua 存储过程时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22774320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com