我有一个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:*" });