如何在Redis中正确存储图像?

Mod*_*daL 1 php redis

决定在Redis中存储图片,如何正确操作?现在我这样做:

$redis->set('image_path', 'here is the base64 image code');
Run Code Online (Sandbox Code Playgroud)

我不确定这是否正常。

Leo*_*llo 6

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

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

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

请参阅数据类型

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

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

你可以做

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

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

  • img 存储最好的是什么?在云端并通过 cdn 或 Redis 检索? (2认同)

Sum*_*i J 5

这是我将图像文件存储到 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
Run Code Online (Sandbox Code Playgroud)