Redis简单面试问题


一、Redis是什么?

Redis是⼀种基于键值对(key-value)的NoSQL数据库。
⽐⼀般键值对数据库强⼤的地⽅,Redis中的value⽀持string(字符串)、hash(哈希)、 list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)等多种数据结构,因此 Redis可以满⾜很多的应⽤场景。
而且因为Redis会将所有数据都存放在内存中,所以它的读写性能⾮常出⾊。
不仅如此,Redis还可以将内存的数据利⽤快照和⽇志的形式保存到硬盘上,这样在发⽣类似断电或者
机器故障的时候,内存中的数据不会“丢失”。
除了上述功能以外,Redis还提供了键过期、发布订阅、事务、流⽔线、Lua脚本等附加功能。
总之,Redis是⼀款强⼤的性能利器


二、Redis 是如何实现数据不丢失的呢?

Redis 数据是存储在内存中的,为了保证 Redis 数据不丢失,那就要把数据从内存存储到磁盘上,以便在服务器重启后还能够从磁盘中恢复原有数据,这就是 Redis 的数据持久化。Redis 数据持久化有三种方式。
1)AOF日志(Append Only File):记录所有的操作命令,并以文本的形式追加到文件中。
原理: AOF采用的是写后日志的方式。Redis先执行命令,把数据写入内存,然后再记录日志到文件中。AOF日志记录的是操作命令,不是实际的数据。如果采用AOF方法做故障恢复时,需要将全量日志都执行一遍。
2)RDB快照(Redis DataBase):将某一时刻的内存数据,以二进制的方式写入磁盘。
原理: RDB采用的是内存快照的方式,它记录的是某一时刻的数据,而不是操作。所以采用R DB方法做故障恢复时,直接把RDB文件读入内存即可。
3)混合持久化方式:Redis 4.0新增了混合持久化的方式,集成了RDB和AOF的优点。


三、Redis 是如何实现高可用?

高可用:Redis 主节点宕机后,从节点替换。若该工作由 Redis 来完成,则说明 Redis 是高可用的。
Redis 实现高可用主要有三种方式:主从复制、哨兵模式,以及 Redis 集群。
1)主从复制
将从前的一台 Redis 服务器,同步数据到多台从 Redis 服务器上,即一主多从的模式,这个跟 MySQL 主从复制的原理一样。
2)哨兵模式
使用 Redis 主从服务的时候,会有一个问题,就是当 Redis 的主从服务器出现故障宕机时,需要手动进行恢复,为了解决这个问题,Redis 增加了哨兵模式(因为哨兵模式做到了可以监控主从服务器,并且提供自动容灾恢复的功能)。
3)Redis Cluster(集群)
Redis Cluster 是一种分布式去中心化的运行模式,是在 Redis 3.0 版本中推出的 Redis 集群方案,它将数据分布在不同的服务器上,以此来降低系统对单主节点的依赖,从而提高 Redis 服务的读写性能。


四、Redis 为什么快?

1)完全基于内存操作
2)使用单线程,避免线程切换和锁竞争
3)基于非阻塞的IO多路复用机制
4)C语言实现,优化过的数据结构,基于⼏种基础的数据结构,redis做了⼤量的优化,性能极高


五、什么是缓存穿透?怎么解决?

缓存穿透,指客户端请求的数据在缓存中和数据库中都不存在,请求直接打到DB。
常见的解决方案有两种:
在这里插入图片描述
在这里插入图片描述


六、什么是缓存雪崩?怎么解决?

缓存雪崩,指同一时段大量的缓存key同时失效,或者Redis服务宕机导致大量请求到达数据库,带来巨大压力。
在这里插入图片描述


七、什么是缓存击穿?怎么解决

缓存击穿问题也是要热点key问题,就是一个被高并发访问并且缓存重建业务较复杂的key突然消失了,无数的请求访问会在瞬间给数据库带来巨大冲击。
常见的解决方案有两种: 一个是互斥锁,一个是逻辑过期。
在这里插入图片描述

  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis是一种开源的内存数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合。Redis还提供了事务、Lua脚本、发布/订阅、复制和集群等功能。 以下是一些Redis面试问题的回答: 1. Redis的优点是什么? Redis的优点包括高性能、可扩展性、丰富的数据结构、支持事务和Lua脚本、支持发布/订阅、复制和集群等功能。 2. Redis的缺点是什么? Redis的缺点包括数据持久化方案相对简单、单线程模型可能会成为瓶颈、内存使用较高等。 3. Redis的数据结构有哪些? Redis支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合。 4. Redis的持久化方式有哪些? Redis支持两种持久化方式:RDB和AOF。RDB是将内存中的数据定期保存到磁盘上,AOF是将Redis执行的每个写命令追加到文件中。 5. Redis的主从复制是什么? Redis的主从复制是指将一个Redis实例作为主节点,其他Redis实例作为从节点,主节点将自己的数据同步到从节点上。从节点可以用于读取数据、提高系统的可用性和容错能力。 6. Redis的集群是什么? Redis的集群是指将多个Redis实例组成一个集群,实现数据的分片和负载均衡,提高系统的可扩展性和容错能力。 7. Redis的事务是什么? Redis的事务是指将多个命令打包成一个事务,然后一次性执行,保证事务的原子性。如果其中一个命令执行失败,整个事务都会回滚。 8. Redis的Lua脚本是什么? Redis的Lua脚本是指将Lua脚本作为一个整体发送给Redis服务器,然后由Redis服务器执行。Lua脚本可以实现复杂的业务逻辑,提高系统的性能和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值