Redis存储图片:可行吗?(redis可以存图片吗)
Redis存储图片是否可行,一直以来都存在争议。Redis是一个开源的,速度快的关键-值存储系统,用于服务器和客户端之间的高性能数据存储与读取。
把图片存放到Redis是可行的,但也要看实际情况。如果图片资源是比较静态的,一次性存储在Redis中就可以;如果图片资源经常变更,需要实时更新,就不建议存放在Redis中。
把图片存放到Redis里面,需要使用set(key,value)来存储,也就是将图片按二进制数据的形式存储进去,比如以下代码:
import redis
r = redis.Redis(host=’localhost’, password=’123456′)
imgName = ‘IMG_001.jpg’
imgData = open(imgName, ‘rb’).read()
r.set(key,imgData)
同理,获取图片也是使用函数get(key),上面的例子可以将图片存储成二进制,但它仍然只是一个普通字符串,如何保证读取出来的图片数据是完整无缺的呢?
我们可以针对图片进行额外的处理,首先是编码,把图片在存储过程中,先把它编码,比如使用base64编码;在获取图片的过程中,先对编码结果进行解码,再将解码后的结果显示出来。
在图片的存取的过程中,如果发现图片尚未加载或者加载了一部分,可以做一定的静默处理,比如使用异步模型加载,或者使用HTML Lazy Load来延迟加载。
总结来说,Redis存储图片是可行的,前提是需要做一定的处理和调整,比如对图片进行额外的编码解码,或者使用HTML Lazy Load来延迟加载。