说 Redis
的缓存机制实现以前,我想先回顾一下 mysql
mysql
mysql
存储在哪儿呢?nginx
以 windows
为例,mysql
的表和数据,存储在data 目录下frm ibd 后缀的文件中redis
mysql存储在机器/服务器的 硬盘中算法
因此 mysql
读写数据都须要从磁盘读取 。磁盘的容量,带宽的大小就影响了网站的访问速度,读取的方式,也就是 sql
语句,次数和效率也会影响读取效率。sql
当访问量和并发很大的时候,mysql
就撑不住了,据统计,mysql的链接池并发数max为 500-1000数据库
这时,咱们能够经过 慢查询优化
,cdn
,页面静态化
, nginx 负载均衡策略
,甚至 分布式数据库
来进行 sql优化 ,固然也可使用 高速缓存,好比 redis
。windows
Redis
- 高并发,内存高速cache ,处理读写io的高并发容忍。缓存
redis 一般被使用来将那些常常被访问的内容缓存在内存中。服务器
不少人谈到redis ,哦,k-v 存储数据库啊, 速度快啊!为何快啊? 人家存内存啊,能不快吗?关键人家还支持复杂的数据结构,list 什么的,不少高并发场景均可以使用。 好比:电商秒杀场景的解决策略与具体原理数据结构
remote dictionary server (远程数据服务) 内存高速缓存数据库 数据模型为 k-v 也就是redis 的一种最常常使用的数据类型 string
k-v 的算法时间复杂度 但是 0(1) 而mysql 的查询是基于表关联技术 ,这就是nosql的优点所在。
附上redis 和memcahe 的比较
Redis支持master-slave(主-从)模式应用,高可用的cache系统,支持集群服务器之间数据同步。
Redis支持数据持久化,能够将内存中的数据保持在磁盘中,重启的时候能够再次加载进行使用。
redis 比sql 到底快多少呢?
1 从存储媒介来看,内存比磁盘的读取速度 hash查找是100w/s 的数量级
2 多路复用io (todo)
redis 和mysql 绝对不是竞争的关系,在工做中合理运用二者才能达到更好的效果。