【问题标题】:Best way to get range of keys using specific pattern in Redis在 Redis 中使用特定模式获取键范围的最佳方法
【发布时间】:2020-06-23 16:23:32
【问题描述】:

我使用 Redis,但我需要从 Redis 获取密钥的最佳方法。

我需要按日期范围(2020-06-01 到 2020-06-20)搜索每个 company_id (id 是唯一的)

键示例 stat:company:2:date:2020-06-13

我想解决问题我每天都会得到钥匙,但如果需要 200 个钥匙。

这需要很多次,我在显示用户之前做了一些有价值的操作。

我尝试使用scan & keys

环境Ruby 2.7.0Ruby on Rails 6.0.3Redis

【问题讨论】:

    标签: ruby-on-rails ruby redis


    【解决方案1】:

    要节省到 redis 的往返次数,您可以使用 mget 一次获取多个密钥(如果只有大约 200 个密钥) - 您甚至可以一次调用完成:

    require 'date'
    company_ids = [:a, :b, :c]
    today = Date.today
    
    #generate your keys:
    keys = company_ids.map{|cid| (1..20).map{|day| [cid, day]} }.flatten(1).map{|cid,day| "stat:company:#{cid}:date:#{today - day}" }
    
    hash = keys.zip(redis.mget(*keys)).to_h
    

    【讨论】:

      猜你喜欢
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 1970-01-01
      • 2013-06-26
      相关资源
      最近更新 更多