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

在REDIS中管理超过百万个结果,redis,Redis,我对使用REDIS相当陌生,但我已经看到了一些限制,或者我不确定该使用什么 所以用例是,我正在基于SQL中的数据进行批处理计算,这些数据运行单独的thread/GAE实例,例如100k是块大小,然后我需要以某种方式将这100k数据存储在REDIS中,并从不同的thread/GAE访问它,但我真的不需要整个集合/哈希/值,我需要这100k中的一个 例如,我要存储的每个值如下: {myData1: {a: 'a', b:'c'}, myData2:{a: 'a', b:'c'}, myData100

我对使用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中,等等,或者覆盖单个结果,以及从集合中提取单个键,如上文O1复杂性中的示例所示

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


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

REDIS哈希非常适合这种处理,它提供了1倍的时间复杂性

也可以考虑用散列来减少总内存占用。请参阅下面的链接instagram如何存储此类信息

Redis很好地记录了这些场景
希望这将为您提供足够的信息

散列听起来很合理,而单个散列可以存储多达40亿条记录。将这些计算行存储在单个散列中似乎是一个完美的方案,例如,散列键将是“计算结果”,其中的字段将映射为myresult1,myresult70000,而该值将被解析为字符串映射,例如{a:'a',b:'b'}。我的想法正确吗?是的,没错。然而,考虑内存优化的“计算结果”,我的答案中的链接提供了有关如何做到这一点的信息。