在 Redis 中存储临时块上传文件



我们有分块文件上传,其中上传的文件由客户端拆分为多个 1MB 块,每个块单独上传并附加到服务器上的临时文件。

通过我们的多个前端,我们正在考虑摆脱粘性会话,在这种情况下,不同的块可能最终位于不同的前端。

我们正在查看最大 200MB 的文件。

将块存储在 Redis 中并将每个新块附加到前端之间共享的现有缓存条目是否有意义?

Redis 是否支持追加到现有缓存条目?
与使用 NAS 文件共享存储临时文件并附加到其中相比,考虑到数据的大小,它在性能方面会有什么好处吗?

Redis 值的最大长度为 512 MB,所以你很好。注意 Redis 字符串是二进制安全的。

可以将每个新块附加到现有缓存条目,请参阅APPEND命令。如果您确定您的块将按顺序到达,这是有道理的。否则,您可能希望每个区块使用一个键(或列表、哈希、集合或排序集中的条目(。

性能方面,从客户端的角度来看,它应该要好得多,因为 Redis 在内存中,NAS 是磁盘存储。它还允许您以不同的顺序接收区块(如果您不使用 append(,并将客户端上传与持久性和后处理逻辑分离。

你要确保支持高峰上传方案。请务必查看过期和逐出策略。

最新更新