在Redis中存储多维数组(电子表格)

时间:2019-04-14 04:07:08

标签: python redis

我正在考虑使用Redis存储以下性质的数据:

data =[
    ['first_name', 'last_name', '', 'x', '', '', 'e'], 
    ['x', '', '', 'x', '', '', 'x'], 
    ['', '', '', 'x']
]

这将对应于一个看起来类似于以下的网格:

first_name    last_name           x                 e
x                                 x                 x
                                  x

如上所示,网格可以具有任意尺寸,并且没有类型限制。

以下是我需要支持的四个操作,以python等效为例:

# insert data at a specific cell, A2
data[0][2] = "new value"

# insert a new blank row, at 2
data.insert(1,[])

# insert a new blank column at B
for i in range(len(data)):
    data[i].insert(1,'')

# retrieve all data
print(data)

redis是存储上述类型数据的好选择吗?如果是这样,如何保存以进行上述操作?作为另一种选择,我的想法是将其存储为json结构,其中包含所有数据,并且每次需要进行操作时都按需检索数据(尽管数据可能高达50MB并加载该数量的数据大约需要2秒)。还有一种选择是将其存储在(row,col,value)之类的数据库中。

1 个答案:

答案 0 :(得分:1)

使用Redis或任何其他DB的问题取决于许多系统要求。 例如:

  1. 数据库的用途是什么。
  2. 您应该以多快的速度检索数据。
  3. 什么是吞吐量,I / O。
  4. 是否应该对数据库进行集群/分片?

为了回答您的问题,如果您需要使用redis,请按照您的描述进行操作:

  1. 将数据构造为json / csv。
  2. 使用redis列表将其他对象推入按键,您可以阅读here
  3. 每次需要读取redis中存储的数据时,都可以分批进行迭代(您需要了解什么是最适合您的用法/下文)。

其他替代方法是使用Mongodb。我会详细说明这个选项是否在桌子上