首先要知道mysql存储在磁盘里,redis存储在内存里,redis既可以用来做持久存储,也可以做缓存,而目前大多数公司的存储都是mysql + redis,mysql作为主存储,redis作为辅助存储被用作缓存,加快访问读取的速度,提高性能
那么为什么不直接全部用redis存储呢?
偶的看法是:因为redis存储在内存中,如果存储在内存中,存储容量肯定要比磁盘少很多,那么要存储大量数据,只能花更多的钱去购买内存,造成在一些不需要高性能的地方是相对比较浪费的,所以目前基本都是mysql(主) + redis(辅),在需要性能的地方使用redis,在不需要高性能的地方使用mysql,好钢用在刀刃上
貌似其他回答都没有说到这一点:redis的持久化功能,还可以防缓存雪崩。应该说这才是redis支持持久化的必要性所在。
例如假设后台架构是redis+mysql,且redis关闭了持久化,redis服务器某天突然宕机,丢失了内存所有缓存,当redis服务器恢复后,必然要重新从mysql拿数据做缓存,如果读数据请求非常集中,mysql可能就瘫痪了,此即为缓存雪崩。
如果遇到土豪公司只用redis数据库而不用mysql,就没有什么缓存雪崩问题,因为此时redis根本就不是缓存功能而是存储功能了。