gpt4 book ai didi

redis - 有人曾经在 redis 缓存中存储过 mp3 吗?

转载 作者:IT王子 更新时间:2023-10-29 06:11:22 24 4
gpt4 key购买 nike

我是 Redis 的新手,我认为我有一个很好的 Redis 用例。我想做的是短时间缓存一个 mp3 文件。这些 MP3 的容量大于 2M,但我也只是说随时可能存储 5-10 个。它们的 TTL 也相当短,几分钟,而不是几小时,等等。

(磁盘持久性不是一种选择)。

那么,我想知道的是,我是否需要花哨的 Base64 来存储 mp3?或者我可以简单地设置 keyvalue=bytearray[] 吗?

此 redis 命中将来自 Web 服务,而 Web 服务又从具有磁盘命中的下游服务获取数据。所以我想做的是在我的中间件上缓存 mp3 文件,如果你愿意的话。我不需要对每个文件都执行此操作,只需对大于 2M 的文件执行此操作,这样我就不必继续返回下游服务器并再次从磁盘请求文件。

谢谢!

尼克

最佳答案

你当然可以存储它们,2MB对于redis来说是存储不了的。

Redis 是二进制安全的,您不需要对数据进行 base64,只需在您喜欢的客户端中通过字节数组存储即可。

我会考虑做的一件事(2Mb 的数据可能不值得,但如果我要存储视频文件为例)是将文件存储为一系列 block ,而不是一次加载所有内容。如果您的应用程序不会同时在内存中保存很多文件,并且文件不是那么大,那么它可能不值得。但如果您期望高并发性,请考虑这一点,因为它会节省应用程序内存,而不是 Redis 内存。

您可以通过多种方式做到这一点:

  1. 您可以将每个 block 存储为有序集合的一个元素,并将序列号作为分数,然后一个一个地读取它们,这样您就不必一次将所有内容加载到内存中。

  2. 您可以将文件存储为一个完整的字符串,但可以使用 GETRANGE 读取 block 。

例如

GETRANGE myfile.mp3 0 10000
GETRANGE myfile.mp3 100000 200000
... #until you read nothing of course

关于redis - 有人曾经在 redis 缓存中存储过 mp3 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35567696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com