此用例的最佳 Redis 数据结构

Best Redis DataStructure for this usecase

我有一个包含 5000 行和 200 万列的二维数组,存储的值只是布尔值 0 或 1。最适合在 Redis 中存储此用例的 Redis 数据结构是什么?

你可以在一个 Redis 实例中创建 5000 个数据库,然后用值为 '1' 的列的索引保存每一行,而不是保存所有 200 万列。通过这样做,也许您可​​以将每行的大小减少到 50 万个长度。那么在反序列化的时候,可以通过编程的方式建立数组的初始值。

//example: row -0 - columns: 00101....1

save [2,4,...,1999999]  // considering zero based indexing

一种直接的方法是将数组存储为字符串并使用 bit commands to manipulate it. That should lead to minimal memory use, and SETBIT and GETBIT 都是 O(1)。

如果数据可以放入 Redis 字符串的 512MB limit 中,您可以只使用一个字符串。不过,您提供的大小太大,因此另一种方法是将每一行存储为单独的字符串。