mysql
和redis
都可以用作存储,但是redis
是基于内存的,所以一般我们不用来存储数据,是与mysql
或者其他数据库联合使用,数据库存储数据,Redis
用作缓存能够是的更快地进行查询。
mysql
也有自己的缓存机制,当两句查询相同时可以走缓存查询也不需要再去存储引擎进行搜索:
但是mysql
的缓存机制默认是关闭的:
mysql> show variables like 'query_cache_type';
+------------------------------+---------+
| Variable_name | Value |
+------------------------------+---------+
| query_cache_type | OFF |
+------------------------------+---------+
既然默认关闭,那也就意味着不建议使用:这是因为:
- MySQL自带的缓存系统应用场景非常有限,它要求SQL语句必须一模一样,多一个空格,变一个大小写都被认为是两条不同的SQL语句
- 缓存失效非常频繁。只要一个表的数据有任何修改,针对该表的所有缓存都会失效。对于更新频繁的数据表而言,缓存命中率非常低!
所以缓存的功能还是交给专业的ORM框架(比如MyBatis默认开启一级缓存)或者独立的缓存服务Redis更加适合