如何在Redis或Valkey中正确存储图片?

问题描述 投票:0回答:2

决定将图像存储在Redis中,如何正确执行?现在我这样做:

$redis->set('image_path', 'here is the base64 image code');

我不确定这是否正常。

php redis valkey
2个回答
18
投票

将图片存储在Valkey/Redis中是完全可以的。键和值都是二进制安全的

字符串是二进制安全的,这意味着字符串可以 包含任何类型的数据,例如 JPEG 图像或序列化的 红宝石对象。

字符串值的最大长度为 512 MB。

您可以将图像存储为二进制而不是base64,这样会更高效:

  • 服务器上的 RAM 内存使用情况
  • 在网络使用中
  • 在计算(CPU)使用中,假设您将二进制图像传递到最终客户端

你可以做

$client->set('profile_picture', file_get_contents("profile.png"));

请参阅在 Redis 中存储二进制数据


7
投票

这是我将图像文件存储到 Redis 数据库并检索它们的简单示例

from PIL import Image
import redis
from io import BytesIO


output = BytesIO()
im = Image.open("/home/user/im.jpg")
im.save(output, format=im.format)

r = redis.StrictRedis(host='localhost', port= 6379, db =0)
r.set('imgdata', output.getvalue())
output.close()
r.save  #redis-cli --raw get 'imgdata' >test.jpg
© www.soinside.com 2019 - 2024. All rights reserved.