gpt4 book ai didi

redis - 如何使用 Redis 在生产环境中访问多个不同的 key ?

转载 作者:可可西里 更新时间:2023-11-01 11:15:49 28 4
gpt4 key购买 nike

我有一个应用程序,我以以下格式在 Redis 中存储数百万个 key :

Type+#+Year+#+MachineType+#+City+#+State+#+Country+#+Size

Sample_Key                                   Value

Retail#2017#MachineA#SanFrancisco#CA#USA#500 1000
Bulk#2017#MachineB#NewYorkCity#NY#USA#1000 100000
Retail#2017#MachineA#NewYorkCity#NY#USA#1000 5000

我的客户会进来并希望聚合特定的值或一组值,比如说,加利福尼亚州旧金山和纽约州纽约的所有内容,以便获得 1000 和 5000(然后我们会执行一些聚合在上面)。什么 Redis 函数最适合说“给我包含旧金山或纽约的键的所有值”,或“给我商店规模为 1000 的所有键”,或任何此类组合。

我需要获取所有这些值,聚合它们并以(理想情况下)毫秒级延迟提供服务。

我已经查看了 KEYS,他们说 NOT 在生产中使用(另外,我从来没有完全弄清楚如何获得两个(或可能更多)的值城市/其他组合)。我已经查找过 SCAN,但是基于游标,它可能不是最佳解决方案。我看过的任何其他内容都完全涵盖了我以快速简便的方式描述的场景。帮忙?

最佳答案

关于不要使用 KEYS,你是对的。在你的情况下 SCAN 也很糟糕,因为你必须迭代大量的键(数百万)。 SCAN 不会阻塞其他命令太久,但总时间成本不会缩短。如果经常运行SCAN 命令,Redis 的负载会很重。事实上,我认为 Redis 不适合这种情况,RDBMS 更好。

我有两个建议:

  1. 使用SCAN 并注意潜在的风险,做一些认真的测试。
  2. 在某个地方存储和维护一个键关系(例如City-Keys),首先找到你需要的键,然后从redis中获取这些键的值。在你的情况下,我建议将所有键放在 RDBMS 表中,并使用 LIKE 找到你需要的(当然,使用搜索引擎如 solr 或 elasticsearch 在性能上要好得多)

关于redis - 如何使用 Redis 在生产环境中访问多个不同的 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48655265/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com