执行Lua脚本,通过stackexchange.Redis删除Redis DB上所有与模式匹配的密钥



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

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:*");

但是我得到以下错误

| Errormessage: ERR wrong number of arguments for 'eval' command

找到答案

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:*" });

最新更新