如何使用 Lua 脚本和 StackExchange.Redis 删除键

我使用 StackExchange.Redis 从 Redis DB 中删除键。通过掩码“val”获取列表并将其删除非常慢。

正在寻找可通过 .ScriptEvaluate 运行的示例代码。

点赞
用户490118
用户490118

找到解决方案。创建以下方法,返回删除的键的数量。

public int RedisPurge(string keyContains)
{
    var serializer = new NewtonsoftSerializer();
    var cacheClient = new StackExchangeRedisCacheClient(serializer);

    var mask = string.Format("*{0}*", keyContains);

    var result = cacheClient.Database.ScriptEvaluate("local keys = redis.call('keys', ARGV[1]) for i=1,#keys,5000 do redis.call('del', unpack(keys, i, math.min(i+4999, #keys))) end return keys", null, new RedisValue[] { mask });

    try
    {
        return Convert.ToInt32(result.ToString().Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)[0]);
    }
    catch (Exception)
    {
        return 0;
    }
}
2015-08-20 08:40:05