ruby-on-rails - 在 Redis 中使用特定模式获取键范围的最佳方法
问题描述
我使用 Redis,但我需要从 Redis 获取密钥的最佳方法。
我需要按日期范围(2020-06-01 到 2020-06-20)搜索每个 company_id (id 是唯一的)
键示例 stat:company:2:date:2020-06-13
我认为要解决问题,我每天都会得到钥匙,但如果需要 200 把钥匙。
这需要很多次,我在 display user 之前做了一些有价值的操作。
我尝试使用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
推荐阅读
- c# - 在列表框中动态添加值,然后尝试在提交按钮上获取值
- html - 如何在不弄乱滚动条的情况下使用溢出滚动制作圆角?
- javascript - 如何仅使用 Enter/press 触发 Typeahead?
- vb.net - 是否可以对多个图片框进行分组?
- c# - 如何在 c# 中创建一个长度为 64 位无符号整数的列表?
- firebase - 在飞镖中返回一个整数
- python - 使用斜纹从登录页面 Python 抓取 .txt
- java - 当我将项目发送给任何人时,如何自动添加外部 Java 库?
- windows - 试图创建一个批处理文件来移动和替换 desktop.ini 但它说找不到文件
- php - 找不到要渲染的模板