我有一个具有5000行和200万列的2D数组,存储的值只是一个布尔值0或1。什么是最适合在Redis中存储此用例的Redis数据结构?
答案 0 :(得分:3)
一种直接的方法是将数组存储为字符串,并使用bit commands对其进行操作。这应该导致最少的内存使用,并且SETBIT
和GETBIT
均为O(1)。
如果数据可以放入Redis字符串的512MB limit中,则可以只使用一个字符串。但是,您提供的大小太大,因此另一种方法是将每一行存储为单独的字符串。
答案 1 :(得分:0)
您可以在Redis实例中创建5000个数据库,然后用值“ 1”的列索引保存每一行,而不是保存所有200万列。通过这样做,也许您可以将每一行的大小减小到一百万个长度。然后,在反序列化时,可以通过编程方式构建数组的初始值。
//example: row -0 - columns: 00101....1
save [2,4,...,1999999] // considering zero based indexing