当前位置: 首页 > 知识库问答 >
问题:

在REDIS中管理超过百万个结果

戚默
2023-03-14

我对使用REDIS相当陌生,但我已经看到了一些限制,或者我不确定该使用什么。

因此,用例是,我正在基于SQL中的数据进行批处理计算,这些数据运行单独的thread/GAE实例,例如100k是块大小,然后我需要以某种方式将这100k数据存储在REDIS中,并从不同的thread/GAE访问它(但我并不真正需要整个集合/哈希/值,我需要这100k中的一个)。

例如,我要存储的每个值如下:

{myData1: {a: 'a', b:'c'}, myData2:{a: 'a', b:'c'}, myData100000: {a: 'a', b:'c'}}

我想检索例如myData70000值。

关键点是,我需要使用REDIS作为(某种地图)集合,在那里我可以追加数据(所以其他线程可以追加另一个100k到以前的100k等,或者覆盖单个结果),以及从集合中获取单个键,如上所述在O(1)复杂度。

我可以很容易地在REDIS中创建单个键/值引用,比如myData1:JSON。strigfy(数据),但计算可以创建大约5000万个引用,然后再对这些引用进行批处理,生成1mil块(因此自然选择将它们作为某种集合),插入SQL,然后清除。

在REDIS中做如此复杂的事情的自然方式是什么?

共有1个答案

蓟安歌
2023-03-14

Redis哈希非常适合这种处理,它提供了O(1)时间复杂度。

还要考虑散列散列以减少总内存占用。请参阅下面的链接instagram如何存储此类信息(https://instagram-engineering.com/storing-hundreds-of-millions-of-simple-key-value-pairs-in-redis-1091ae80f74c)

Redis很好地记录了这种情况(https://redis.io/topics/memory-optimization)希望这将为您提供足够的信息

 类似资料:
  • 问题内容: 我正在使用Redis通过Redis-py客户端库存储两个数据库:0和1 。我想为每个数据库创建两个连接。目前,我正在这样做: 但是,我似乎找不到从连接创建Redis对象的方法。 我在这里犯一个菜鸟错误吗? 问题答案: 您真的不应该那样创建连接。让我引用redis-py文档。 在后台,redis- py使用连接池来管理与Redis服务器的连接。默认情况下,您创建的每个Redis实例将依次

  • 问题内容: 我最近发现并修复了我正在处理的站点中的错误,该错误导致表中有数百万行重复的数据行,即使没有行也将非常大(仍然有数百万行)。我可以轻松找到这些重复的行,并可以运行一个删除查询来杀死它们。问题是试图一次删除这么多行会长时间锁定表,如果可能的话,我想避免这种情况。我可以看到摆脱这些行而又不占用站点(通过锁定表)的唯一方法是: 编写一个脚本,该脚本将循环执行数千个较小的删除查询。从理论上讲,这

  • 我检索用户的照片使用管理sdk在java。我也实现了指数退避。 但在几次请求之后,我得到了403个错误代码和速率受限的异常消息。 有2000名用户和10至20名用户的照片。它开始给出403错误,并使用指数回退,这需要很长时间才能执行。 有人能给我一些关于这个问题的建议吗。?

  • 我有以下用例: 当我的服务启动时,它可能需要在尽可能短的时间内处理数百万个文档。将有三个数据来源。 我已设置以下内容: 我的每个源调用consume都使用Guice来创建一个单例破坏者。 我的eventHandler例程是 我在日志中看到,制作人(

  • 超级管理员是整个系统的管理员。我们可以在RBAC,ABAC以及带域的RBAC等模型中使用它 具体例子如下: [request_definition] r = sub, obj, act [policy_definition] p = sub, obj, act [policy_effect] e = some(where (p.eft == allow)) [matchers] m = r.