有人能告诉我如何在redis中保存文件吗?我希望能够做类似的事情:
hmset 12345 sound_bytes <pathtofile/filename.mp3>
举个例子。
我正在使用python,因此需要使用python打开mp3文件,将其保存为我猜的字节数组(?),然后将该字节数组保存到redis中。
我知道我可以在 python 中打开这样的文件:
with open(filename, 'rb') as fd:
contents = fd.read()
但是,如果我以某种方式在 REDIS 中保存“内容”,当我稍后检索它以实际播放它或通过 REST 方法将其传回时,还有什么需要做的吗?我需要做什么才能让 python 将其“识别”为声音文件而不仅仅是字符串?
我以前从未尝试过这样的事情,所以任何指针或陷阱将不胜感激。
编辑 1
到目前为止,这是我一直在玩的代码:
14 def sound_file_to_bytes(pathtofile):
15 try:
16 with open(pathtofile, 'rb') as fd:
17 contents = fd.read()
18 logging.info(contents)
19 fd.close()
20 return contents
21 except Exception as ex:
22 return "Error:", ex
23
24 def sound_as_bytes_to_db(soundbytes):
25 try:
26 logging.info('attempting to save sound bytes')
27 my_redis = redis.Redis(connection_pool=POOL)
28 response = my_redis.hmset('55555', 'greeting', soundbytes)
29 logging.info(response)
30 return True
31 except Exception as ex:
32 return False
通过日志,我可以看到文件的内容正在被读入我的变量中。当我尝试转身并写入数据库时,我没有收到任何错误,但我的 SET 中“greeting”键的值的内容是空的。注意下面的redis输出:
127.0.0.1:6379[5]> hgetall 55555
1) "email1"
2) "johndoe@hotmail.com"
3) "email2"
4) "jd@yahoo.com"
5) "greeting"
6) ""
127.0.0.1:6379[5]>
编辑 2
我发现了为什么它没有将内容保存到数据库中。我的 hmset 命令有语法问题。现在代码如下所示:
28 response = my_redis.hmset('55555',{'greeting':soundbytes})