利用Redis存储图片,提高效率(图片存redis)
引言
存储图片是网络日常开发经常需要用到的功能,传统的技术需要将图片存储在文件系统中,如NFS,或者数据库中(例如MySQL),但是现如今如果我们采用这种技术搭建起来,会发现存储效率还是比较低。
本文介绍采用Redis服务器存储图片,以提高数据存储的效率
Node.js
Node.js是一种动态的、跨平台的JavaScript运行环境,它可用于构建大规模的高性能的web服务器,它的特点在于拥有开发快速高效的特性,并且没有任何框架和类库的依赖。在此,我们将利用Node.js的语言特性和异步I/O,来帮助我们实现该功能。
Redis
Redis是一个开源的内存数据库,可以用来存储非持久化数据,在内存中存储数据可以大大提高读取速度,使得系统有更高的效率。
实现思路
利用Node.js编写图片处理应用,将用户上传的图片转换为base64编码的字符串,然后以base64编码的字符串来作为存储该图片的数据,将中base64编码字符串存储到Redis服务器即可,当我们在使用时需要取出图片,则从Redis中取出base64编码字符串,将其转换成二进制码,即可还原图片。
实现代码
我们编写图片处理应用,将用户上传的图片转换为base64编码的字符串,代码如下:
// 引入模块
const fs = require(‘fs’);
const buffer = require(‘buffer’);
// 将图片转换成base64编码字符串
const image_name = ‘test.jpg’;
let data = fs.readFileSync(image_name);
let base64 = buffer.Buffer(data).toString(‘base64’);
// 将base64编码的字符串存储到Redis服务器
const redisClient = new Redis();
redisClient.set(‘image’, base64);
// 从Redis服务器取出base64编码的字符串
let data = redisClient.get(‘image’).toString();
// 将base64编码的字符串转换成图片
const buffer = new Buffer(data, ‘base64’);
fs.writeFileSync(‘image.jpg’, buffer);
总结
以上,说明了如何采用Redis服务器存储图片,以提高图片存储效率,我们用Node.js来编写图片处理应用,将用户上传的图片转换为base64编码的字符串,然后将其存储到Redis服务器中;当使用时,从Redis服务器取出base64编码字符串,转换成二进制码,即可还原图片。