ruby-on-rails - 在 Redis 中使用特定模式获取键范围的最佳方法

标签 ruby-on-rails ruby redis

我使用 Redis,但我需要从 Redis 获取 key 的最佳方式。

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

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

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

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

我尝试使用scan & keys

环境 Ruby 2.7.0, Ruby on Rails 6.0.3 Redis

最佳答案

要节省到 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

关于ruby-on-rails - 在 Redis 中使用特定模式获取键范围的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62539390/

相关文章:

php - Redis错误ERR错误的参数数量为 'hmset'

javascript - 您如何抓取字段以进行自动标记?

ruby-on-rails - 无法解码下载的字体 glyphicons-halflings-regular.woff2 - Rails,生产

ruby - 如何在不使用文本的情况下找到 Ruby 运算符的含义?

ruby - Ruby 中的 Avro 序列化 - 如何写入字符串/缓冲区而不是文件

ruby - 有没有办法绕过 ruby​​ redis 包装器并将命令定向到 redis?

ruby-on-rails - rails 3 : use contents of an array as variables in a where method

ruby-on-rails - 网站如何根据URL更改连续播放标题中的音频

ruby-on-rails - 如何在rails中制作可变路线

redis - Redis georadius函数能否查询hash数据类型