redis缓存机制和底层实现

说 Redis 的缓存机制实现以前,我想先回顾一下 mysqlmysql

mysql 存储在哪儿呢?nginx

以 windows 为例,mysql 的表和数据,存储在data 目录下frm ibd 后缀的文件中redis

mysql存储在机器/服务器的 硬盘中算法

因此 mysql 读写数据都须要从磁盘读取 。磁盘的容量,带宽的大小就影响了网站的访问速度,读取的方式,也就是 sql 语句,次数和效率也会影响读取效率。sql

当访问量和并发很大的时候,mysql 就撑不住了,据统计,mysql的链接池并发数max为 500-1000数据库

这时,咱们能够经过 慢查询优化 ,cdn ,页面静态化nginx 负载均衡策略 ,甚至 分布式数据库 来进行 sql优化 ,固然也可使用 高速缓存,好比 rediswindows


Redis - 高并发,内存高速cache ,处理读写io的高并发容忍。缓存

redis 一般被使用来将那些常常被访问的内容缓存在内存中。服务器

不少人谈到redis ,哦,k-v 存储数据库啊, 速度快啊!为何快啊? 人家存内存啊,能不快吗?关键人家还支持复杂的数据结构,list 什么的,不少高并发场景均可以使用。 好比:电商秒杀场景的解决策略与具体原理数据结构

remote dictionary server (远程数据服务) 内存高速缓存数据库 数据模型为 k-v 也就是redis 的一种最常常使用的数据类型 string

k-v 的算法时间复杂度 但是 0(1) 而mysql 的查询是基于表关联技术 ,这就是nosql的优点所在。

附上redis 和memcahe 的比较

  1. Redis不单单支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  2. Redis支持master-slave(主-从)模式应用,高可用的cache系统,支持集群服务器之间数据同步。

  3. Redis支持数据持久化,能够将内存中的数据保持在磁盘中,重启的时候能够再次加载进行使用。

  4. Redis单个value的最大限制是1GB,(k-v),memcached只能保存1MB的数据。(k:250kb v:1mb)

redis 比sql 到底快多少呢? 
1 从存储媒介来看,内存比磁盘的读取速度 hash查找是100w/s 的数量级

2 多路复用io (todo)


redis 和mysql 绝对不是竞争的关系,在工做中合理运用二者才能达到更好的效果。

相关文章
相关标签/搜索