借助Redis做快速图片去重(图片去重 redis)
图片去重是日常开发中经常会遇到的功能,比如头像贴图,文章封面图片,等等,在应用中,常常需要把重复的图片剔除,这时如何快速精确的判断一张图片是否已经存在,就非常重要。
Redis 是一种快速可靠的键值对内存数据库,由于其方便的数据存储方式特别适合快速判断去重。基于Redis可以将图片以 hash 值 or 图片名字作为 key ,而 value 就是一个图片本身的信息。比如图片作者,尺寸,创建时间等等。具体实现如下:
1. 使用 cv2 库读取图片,转换成 numpy 数组;
2. 对图片做哈希计算(比如最常用的 MD5 );
3. 把得到的哈希值作为 key 存入 Redis,value 作为存储图片相关信息;
4. 当接收到新的图片的时候,计算新图片的 hash ,然后查询 Redis 数据库,如果发现 hash 值存在,则认为新图片与之前存储的图片是重复的图片,就可以把新图片抛弃掉。
与传统方法比较,这种方法有以下优点:
– 速度快:Redis 运行在内存中,可以提供更快的读写速度;
– 低成本:Redis 不需要安装,而且体积小,响应及时,运行稳定,无需额外投入;
– 精确判断:Redis 极其适合模糊查询,通过图片的 hash 值可以严格的判断是否是重复的图片;
– 数据安全可靠:Redis 支持持久化,可以将数据持久化存储到磁盘中;
使用 Redis 来做图片去重是一个易于使用并且可靠而有效的方法,也节省了大量的时间和成本。