Redis面试——redis基础、5种数据类型、持久化、主从模式、哨兵

Redis面试——redis基础、5种数据类型、持久化、主从模式、哨兵_第1张图片

问题目录

1.5种基本数据类型
2.分布式锁
3.缓存一致性
4.缓存穿透、击穿、雪崩
5.跳表

1.Redis前言

0.Redis为什么这么快?

  • 1.纯内存操作:读取不需要进行磁盘 I/O,所以比传统数据库要快上不少;(但不要有误区说磁盘就一定慢,例如 Kafka 就是使用磁盘顺序读取但仍然较快)
  • 2.单线程无锁竞争:这保证了没有线程的上下文切换,不会因为多线程的一些操作而降低性能;
  • 3.多路 I/O 复用模型,非阻塞 I/O:采用多路 I/O 复用技术可以让单个线程高效的处理多个网络连接请求(尽量减少网络 IO 的时间消耗);
  • 4.高效的数据结构,加上底层做了大量优化:Redis 对于底层的数据结构和内存占用做了大量的优化,例如不同长度的字符串使用不同的结构体表示,HyperLogLog 的密集型存储结构等等…

1.纯内存访问

Redis将所有数据放在内存中,非数据同步正常工作中,是不需要从磁盘读取数据的,0次IO。Redis就是用C语言开发的,所以执行会比较快。

2.单线程

优点

第一,单线程简化算法的实现,并发的数据结构实现不但困难且测试也麻烦。
第二,单线程避免了线程切换以及加锁放锁带来的消耗,对于服务端开发来说,锁和线程切换通常是性能杀手。

缺点

单线程也会有它的缺点,:阻塞。如果执行一个命令过长,那么会造成其他命令的阻塞,对于Redis是十分致命的,所以Redis是面向快速执行场景的数据库。

3.I/O多路复用技术

2.Redis优缺点

1.优点

  • 1.读写性能优异, Redis能读的速度是 110000 次/s,写的速度是 81000 次/s。
  • 2.支持数据持久化,支持 AOF 和 RDB 两种持久化方式。
  • 3.支持事务,Redis 的所有操作都是原子性的,同时 Redis 还支持对几个操作合并后的原子性执行。
  • 4.数据结构丰富,除了支持 string 类型的 value 外还支持 hash、set、zset、list 等数据结构。
  • 5.支持主从复制,主机会自动将数据同步到从机,可以进行读写分离

2.缺点

  • 1.数据库 容量受到物理内存的限制,不能用作海量数据的高性能读写,因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。
  • 2.Redis 不具备自动容错恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的 IP 才能恢复。
  • 3.主机宕机,宕机前有部分数据未能及时同步到从机,切换 IP 后还会引入数据不一致的问题,降低了 系统的可用性。
  • 4.Redis 较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。

3.缓存相关问题

1

你可能感兴趣的:(Redis面试,分布式,数据库)