什么情况下使用 redis 作为 mysql 查询结果的 cache

天启 后端 数据库 2019-09-26

So if SQL Server has it's own cache, what is the benefit of an external Memcached (or similar) server?

适用 redis 的场景

  • 复杂/耗时 MySQL 查询的结果缓存。例如,凌晨计算一次的结果,缓存到 redis。但是缓存到 MySQL 的一个新字段也可以。。。
  • 可以设置自动过期
  • 方便分布式部署
  • 需要多次 MySQL 查询,及计算,然后才能生产的结果。例如,排行榜,及每一名的具体信息。

MySQL query cache 什么情况下需要开发/关闭

如果你的应用对数据库的更新很少,那么QC将会作用显著。比较典型的如博客系统,一般博客更新相对较慢,数据表相对稳定不变,这时候QC的作用会比较明显。如果数据库一共往QC中写入了约800W次缓存,但是实际命中的只有约500W次。也就是说,每一个缓存的使用率约为0.66次。很难说,该缓存的作用是否大于QC系统所带来的开销。但是有一点是很肯定的,QC缓存的作用是很微小的,如果应用层能够实现缓存,将可以忽略QC的效果。

查看命中率的方式

show global status like '%Qcache%';

https://mysqlserverteam.com/mysql-8-0-retiring-support-for-the-query-cache/

MySQL 从5.6开始默认禁用query cache, 8.0彻底移除了,文章有分析不使用cache的原因。

评论