如何在redis中优化存储字节矩阵以便快速实时访问?
How to optimally store a matrix of bytes in redis for quick real-time access?
我有一个 128 x 1048576 的字节矩阵,多个客户端可以快速读取和写入字节。这个矩阵可以认为是表示图像的像素。
此外,客户端在扫描整个数据集的部分内容时需要能够读取此矩阵的整个 128 x 128 扇区。
我有一些使用 redis 的潜在解决方案:
为图像的每个像素赋予自己的密钥,并要求客户端进行 128 x 128 次读取以获取每个扇区。
创建 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
我有一个 128 x 1048576 的字节矩阵,多个客户端可以快速读取和写入字节。这个矩阵可以认为是表示图像的像素。
此外,客户端在扫描整个数据集的部分内容时需要能够读取此矩阵的整个 128 x 128 扇区。
我有一些使用 redis 的潜在解决方案:
为图像的每个像素赋予自己的密钥,并要求客户端进行 128 x 128 次读取以获取每个扇区。
创建 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