本文作者:kris

MySQL查询缓存的小知识-mysql查询缓存的小知识有哪些

kris 2025-02-02 20:36:05 2
MySQL查询缓存的小知识-mysql查询缓存的小知识有哪些摘要: mysql查询缓存是基于什么粒度?mysql数据库查询缓存原理是:1、缓存SELECT操作的结果集和SQL语句,key为sql,value为查询结果集;2、如果新的SELECT语句...

mysql查询缓存是基于什么粒度?

mysql数据库查询缓存原理是:

1、缓存SELECT操作的结果集和SQL语句,key为sql,value为查询结果集;

2、如果新的SELECT语句到了,以这个sql为key去缓存中查询,如果匹配,就把缓存的结果集返回。

MySQL查询缓存的小知识-mysql查询缓存的小知识有哪些

图片来源:网络

匹配标准:与缓存的SQL语句是否完全一样,sql中字母区分大小写以及中间的空格,简单理解为存储了一个key-value结构,key为sql,value为sql查询结果,匹配时使用Java的String的equals(),例如:

select age from user 与 select AGE from user不会匹配,因为大小写不同;

select age from use 与 select age from user不会匹配,因为空格不同;

如何用redis/memcache做Mysql缓存层?

应用层更改的话那个工作量肯定大,但是如果把redis加在服务层那不就是一劳永逸了。所以推荐你先去学习一下redis的数据类型和使用方式,入门大概在一天左右,然后就可以整合到项目里面开始用了。

你的想法是正确的,以前没有换成组件时,为了提升速度,我们就是简单的实现:每次读db时缓存map中,下次同key直接读map;db表发生RUD则清除map。现在的缓存组建做的都比较好,你说的memcache和redis使用的场景还是需要考虑下。若是仅自模块用,建议memcache,已经与Java集成非常好,基本不用考虑代码,配置下就差不多了。若是多模块用,建议redis,但缓存逻辑还是需要自己设计实现。或者你二者都使用,在不同的合适的业务场景下。若是在原有代码上增加缓存,那是需要好好设计,比较要保证现业务的兼容性和正确性及完整性。缓存毕竟与db间有个时差,需要充分考虑一致性问题。

文章版权及转载声明

作者:kris本文地址:https://www.damoyx.com/p/29901.html发布于 2025-02-02 20:36:05
文章转载或复制请以超链接形式并注明出处大漠游侠网

阅读
分享