【问题标题】:How to remove keys with Lua script and StackExchange.Redis如何使用 Lua 脚本和 StackExchange.Redis 删除密钥
【发布时间】:2015-11-13 17:59:06
【问题描述】:

我使用 StackExachange.Redis 从 Redis DB 中删除键。通过掩码*val*获取列表然后删除是很慢的。

寻找可使用 .ScriptEvaluate 运行的示例代码。

【问题讨论】:

    标签: lua redis stackexchange.redis


    【解决方案1】:

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

    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-10-10
      • 2020-05-27
      • 2020-09-29
      • 1970-01-01
      • 2023-02-19
      • 2012-02-06
      • 1970-01-01
      • 2023-03-10
      • 2017-05-21
      相关资源
      最近更新 更多