如何使用StackExchange.Redis调用Redis函数

laik7k3q  于 2022-09-21  发布在  Redis
关注(0)|答案(1)|浏览(348)

我编写并注册了这个Redis函数:

local function stincr(KEYS, ARGS)    
     local value = redis.pcall('INCR', KEYS[1])
     if value == 1 or value % 100 == 0 then
        redis.call('ZADD', KEYS[2],'GT', tostring(value), KEYS[1])
     end
     return value;
end
redis.register_function('stincr', stincr)

Redis Functions是Redis 7中引入的,怎么用StackExchange.Redis来调用呢?

5kgi1eie

5kgi1eie1#

到目前为止,StackExchange.Redis还没有任何更高级别的API来 Package Functions API,但是,您可以很容易地使用即席命令API。我修改了您的脚本,在开头添加了redis调用的shebang,并将其添加到script.lua


# !lua name=mylib

local function stincr(KEYS, ARGS)    
     local value = redis.pcall('INCR', KEYS[1])
     if value == 1 or value % 100 == 0 then
        redis.call('ZADD', KEYS[2],'GT', tostring(value), KEYS[1])
     end
     return value;
end
redis.register_function('stincr', stincr)

然后,加载/调用该函数非常简单:

var script = File.ReadAllText("script.lua");

var muxer = ConnectionMultiplexer.Connect("localhost");

var db = muxer.GetDatabase();

db.Execute("FUNCTION", "LOAD", script);
var res = db.Execute("FCALL", "stincr", 2, "myNum", "myzset");

相关问题