Redis 存储非常大的数据列表

Redis 存储非常大的数据列表,redis,storage,aerospike,large-data,Redis,Storage,Aerospike,Large Data,我需要存储一个非常大的列表(大小高达80MB),我可以将数据分块并跨多个键存储—a_1,a_2。。。等等这个解决方案看起来一点也不优雅,而且还带来了一项开销,即必须维护一个查找字典{'a':[1,2,….]},以便在回读某个特定文档时知道该文档存在多少块 在Redis或Aerospike中是否有其他方法可以做到这一点?我并不是一心想使用Redis,任何其他存储(关系存储除外)都可以 根据您的输入,redis列表将适合您。您可以在相同的基础上进行简单的基准测试。根据列表,我假设您将访问某个范围内的

我需要存储一个非常大的列表(大小高达80MB),我可以将数据分块并跨多个键存储—a_1,a_2。。。等等这个解决方案看起来一点也不优雅,而且还带来了一项开销,即必须维护一个查找字典{'a':[1,2,….]},以便在回读某个特定文档时知道该文档存在多少块


在Redis或Aerospike中是否有其他方法可以做到这一点?我并不是一心想使用Redis,任何其他存储(关系存储除外)都可以

根据您的输入,redis列表将适合您。您可以在相同的基础上进行简单的基准测试。根据列表,我假设您将访问某个范围内的数据

使用lpush推送所有数据

使用lrange检索数据块


给你一个想法,在粗略的规模上,你的列表大小将是10000。输入80MB数据所需的时间约为1秒。检索大约500个数据块(在一定范围内)的时间大约需要200毫秒。这可能因您的输入、RTT等而异。

您将如何检索它?整个还是大块?如果是大块的,一次多少?该列表中每个条目的大致大小是多少?好吧,如果我知道所有这些问题的答案,那么现在就不是什么问题了,是吗?:)由于这种同步操作不太频繁(每天一次),并且只读取一次(不是读取密集型),因此块大小可能很大(~1MB)。列表中的每个条目都有约20Kb的数据。如前所述-需要读取/加载所有数据块,以便进行预处理。最好使用近似数字,以便更好地进行设计:)