Redis,即Remote Dictionary Server,是一种基于内存的高效键值对存储系统,相比其他数据库,它的访问速度更快,同时它可以满足复杂的存储需求,由于其精度高、操作简单、性能优异等特性,被称为“NoSQL之父”,被广泛应用于互联网行业。然而Redis也存在缺点,不足之处令人堪忧。
Redis拥有单线程模型,也就是说一个命令执行完成后,才会执行另一个命令,因此无法支持多用户同时处理数据,即便改用cluster模式,仍然存在一定程度的性能限制,另外,当系统内存不足时,它无法增加内存以应付海量数据,使得采用Redis的系统运行速度受到限制。
Redis最大的特点是高性能,但是它不支持复杂查询,对于对群体类数据的进行统计分析,只能利用Lua脚本查找,并且拥有使用白名单的安全机制,性能比MySQL低很多,而且也不支持多表联合查询,因此使用Redis进行复杂查询很不方便。
另外,Redis不能支持ACID特性,它只能支持ATOM级的原子性操作,也就是说每一次的事务是单独的,多个事务间的执行顺序无法确定,这就导致业务复杂时,不能维护数据一致性,所以Redis不适合处理复杂的业务场景。
Redis只适合存储key-value等简单数据,从复杂数据到日志管理等,它做不到,而且它无法支持数据恢复功能,一旦Redis服务器挂掉,所有数据就会丢失掉,对于重要性不同的业务系统,使用Redis存在一定的风险。
Redis拥有高效、简单、易学的特性,但由于其单线程、不支持复杂查询、无法增加内存、不支持ACID特性、缺乏数据恢复功能等原因,让其在互联网企业中只能作为一种非常重要的补充而存在。