如何在redis中优化存储字节矩阵以便快速实时访问?

How to optimally store a matrix of bytes in redis for quick real-time access?

我有一个 128 x 1048576 的字节矩阵,多个客户端可以快速读取和写入字节。这个矩阵可以认为是表示图像的像素。

此外,客户端在扫描整个数据集的部分内容时需要能够读取此矩阵的整个 128 x 128 扇区。

我有一些使用 redis 的潜在解决方案:

  1. 为图像的每个像素赋予自己的密钥,并要求客户端进行 128 x 128 次读取以获取每个扇区。

  2. 创建 8192 个哈希来表示图像的每个扇区。每个扇区中的像素将表示为这些散列中的字段。这意味着每个散列将有 128 x 128 个字段。

在这 2 个解决方案中,哪个更符合我的要求?

此外,在每个 key/field 中存储超过 1 个像素会有什么好处吗?如果是这样,我如何确定在每个数据点存储的最佳字节数? (这会降低我的 reads/writes 的精度,但也会减小我的键空间的大小)

如果你想到更好的方案,使用redis集群,或者根本不用redis,欢迎提出来。

提前致谢, Dom

听起来像是 Redis 的位域数据结构的完美用例 - 在 Redis 网站上有完整的记录:https://redis.io/commands/bitfield

事实上,Reddit 最近(4 月 1 日)用 Bitfield 做了一个名为 /r/Place 的惊人项目,这听起来非常像你正在尝试做的 - 以下是详细信息:https://redditblog.com/2017/04/13/how-we-built-rplace