mysql 存储在哪儿呢?
以 windows 为例, mysql 的表和数据, 存储在 data 目录下 frm ibd 后缀的文件中
mysql 存储在机器 / 服务器的 硬盘中
所以 mysql 读写数据都需要从磁盘读取 磁盘的容量, 带宽的大小就影响了网站的访问速度, 读取的方式, 也就是 sql 语句, 次数和效率也会影响读取效率
当访问量和并发很大的时候, mysql 就撑不住了, 据统计, mysql 的连接池并发数 max 为 500-1000
这时, 我们可以通过 慢查询优化 ,cdn , 页面静态化,
nginx 负载均衡策略
, 甚至 分布式数据库 来进行 sql 优化 , 当然也可以使用 高速缓存, 比如 redis
Redis - 高并发, 内存高速 cache , 处理读写 io 的高并发容忍
redis 通常被使用来将那些经常被访问的内容缓存在内存中
很多人谈到 redis , 哦, k-v 存储数据库啊, 速度快啊! 为什么快啊? 人家存内存啊, 能不快吗? 关键人家还支持复杂的数据结构, list 什么的, 很多高并发场景都可以使用 比如: 电商秒杀场景的解决策略与具体原理
remote dictionary server (远程数据服务) 内存高速缓存数据库 数据模型为 k-v 也就是 redis 的一种最经常使用的数据类型 string
k-v 的算法时间复杂度 可是 0(1) 而 mysql 的查询是基于表关联技术 , 这就是 nosql 的优势所在
附上 redis 和 memcahe 的比较
Redis 不仅仅支持简单的 k/v 类型的数据, 同时还提供 list,set,zset,hash 等数据结构的存储
Redis 支持 master-slave(主 - 从) 模式应用, 高可用的 cache 系统, 支持集群服务器之间数据同步
Redis 支持数据持久化, 可以将内存中的数据保持在磁盘中, 重启的时候可以再次加载进行使用
Redis 单个 value 的最大限制是 1GB,(k-v),memcached 只能保存 1MB 的数据 (k:250kb v:1mb)
redis 比 sql 到底快多少呢?
1 从存储媒介来看, 内存比磁盘的读取速度 hash 查找是 100w/s 的数量级
2 多路复用 io (todo)
redis 和 mysql 绝对不是竞争的关系, 就好像你拿 485 和 86 去秋名山飙车, 他们应该是一对好基友, 在工作中合理运用两者才能达到更好的效果
来源: http://www.92to.com/bangong/2018/03-18/33454985.html