【问题标题】:Delete redis key matching pattern using ruby使用 ruby​​ 删除 redis 键匹配模式
【发布时间】:2021-05-18 11:30:08
【问题描述】:

我想删除 ruby​​ 中命名空间“datetime_filter”下定义的所有 redis 键(维护任务)。 如何做到这一点?

【问题讨论】:

    标签: ruby redis


    【解决方案1】:

    如果您不想阻止服务器,正确的方法是使用SCAN 命令。如果您愿意,该命令将为您提供一个仅返回与您的模式匹配的键的迭代器(在这种情况下,使用 MATCH 选项肯定是合适的)。 Ruby 脚本只需要迭代和删除。

    所以:

    WHILE keys = SCAN MATCH datetime_filter*
        FOREACH key in keys DEL key
    

    【讨论】:

      【解决方案2】:

      试试这个 -

       $redis.del(datetime_filter_key)
      

      并遵循以下方法 -

      In redis, how do i remove keys?

      【讨论】:

        【解决方案3】:

        你可以使用:

        Rails.cache.redis.keys.grep(/pattern/).each do |k|
          Rails.cache.redis.del(k)
        end
        

        【讨论】: