3.6 KiB
3.6 KiB
edis笔记
Redis背景
-
90年代的访问量不大的网站,一个MySQL数据库就能轻松搞定,它的框架为:
DAL是数据访问层的意思
-
在MySQL的前边挡了一个缓存层,将重复读写的数据放入缓存层,减轻MySQL的压力;MySQL的弱点在于大量的重复读写,数据量一大就会出现性能跟不上。所以出现了 Memcached,框架为:
-
Memcached 只能够减少MySQL的读取压力,这样的结构还是不能满足性能要求,读和写都集中在一台数据库服务器中,使得MySQL数据库不堪重负,所以就出现了 “主从复制,读写分离” 的模式,被称为 master-slave 模式,框架为:
-
MySQL集群,将与业务高活跃度的数据放在一个库中,冷数据放在其他库中,这样就生成MySQL集群。
- 在Memcached的高速缓存,MySQL的主从复制,读写分离的基础之上,这时MySQL主库的写压力开始出现瓶颈,而数据量的持续猛增,由于MyISAM使用表锁TODO:MyISAM引擎和表锁、行锁什么意思?,在高并发下会出现严重的锁问题,大量的高并发MySQL应用开始使用InnoDB引擎代替MyISAM。
- 同时,开始流行使用分表分库来缓解写压力和数据增长的扩展问题。这个时候,分表分库成了一个热门技术,是面试的热门问题也是业界讨论的热门技术问题。也就在这个时候,MySQL推出了还不太稳定的表分区,这也给技术实力一般的公司带来了希望。虽然MySQL推出了MySQL Cluster集群,但性能也不能很好满足互联网的要求,只是在高可靠性上提供了非常大的保证。
-
为什么使用 Nosql 服务器?
自从Google,Facebook 等这样的公司兴起,数据量指数级增长,数据复杂度也不断地增长,传统的关系型数据库已经不适应这种高复杂度的应用场景,所以出现了 Nosql 数据库。
Redis的原理
-
什么是 Nosql ?
Nosql = not only SQL ;
-
谈谈你对Redis的理解。从这三方面来说:KV ,Cache,Persistence(持久化)
Redis面试题
- Redis如何扩容?
- Redis是单进程 ,对Redis的访问分为写和读,类似生产者和消费者,发现写的少,读的相对多些,这就可以将读写分离,写的往主的写,读的从备的服务器读,遇到的情况恰好是读和写是两个服务,做到读写分离通过改下配置信息就可以很简单的做到,这样分散了主Redis的压力;
- 搭建集群,与上面方法结合使用。
- 为何Redis读写速度比MySQL快? 答:Redis存储结构相对简单,而且存储的位置是在内存中。
- 为什么Redis称为非关系型,MySQL称为关系型数据库?
- 关系模型指的就是二维表格,关系型数据库就是由二维表格和表格之间的关系组成的数据组织;
- 非关系型则更轻量级,存储的数据结构更加简单,而且不固定;
- 关系型数据库使用起来容易理解,能够存储更加复杂的数据;
- 非关系数据库性能高,支持高并发读写;
- Redis连接池?
- 节省临时获取Redis链接的时间,提高效率;
- 通过定义 redis.pool 对象实现。
- Redis缓冲池
- Redis存储的数据结构
- string
- hash
- 集合
- 链表
- 使用Redis排序