使用 stackexchange.redis 执行 Lua 脚本删除匹配模式的所有键

我有一个 Lua 脚本,可以删除与模式匹配的所有键。脚本如下:

EVAL "return redis.call('del', 'defaultKey', unpack(redis.call('keys', ARGV[1])))" 0 ad:*

这在 redis-cli 中很好用,但我想在使用 StachExchange.Redis.NET 应用程序中执行它。 我尝试了以下内容:

await db.ExecuteAsync("EVAL", "\"return redis.call('del', 'defaultKey', unpack(redis.call('keys', ARGV[1])))\" 0 ad:*");

但我得到以下错误

| 错误消息:ERR eval 命令的参数数量错误
点赞
用户4367493
用户4367493

发现答案

var script = "return redis.call('del', 'defaultKey', unpack(redis.call('keys', @keypattern)))";
var prepared = LuaScript.Prepare(script);
var noOfDeletedKeys = db.ScriptEvaluate(prepared, new { keypattern = (RedisKey)"ad:*" });
2021-05-03 14:11:46