Redis 面试题+答案

1.Redis的五种数据类型

String、Hash、List、Set、ZSet(有序Set)

2.Redis数据持久化的方式

AOF持久化
RDB持久化(Redis默认的持久化机制)

3.Redis如何实现主从复制

发送:
1.从库和主库建立连接后,向主库发送sync命令
2.主库接收到命令后,进行开启数据存盘的进程,数据持久化到RDB或者AOF文件
3.持久化完毕后,主库把持久化文件发送给从库
接收:
1.全量复制:接收到主库发送过来的文件后,会全部保存到内存中
2.增量复制:连接成功后,主库会把收集到的修改的执行命令发送给从库,从库只需要执行这些命令完成同步,不需要在执行整个文件。

4.Redis是单线程为什么执行效率还这么高

1.Redis执行命令基于内存操作。
2.Redis是单线程执行命令,没有线程切换的开销
3.基于IO多路复用机制提升IO利用率
4.高效的存储结构,全局hash表和多种高效的存储结构

5.Redis的key过期了为什么还没有释放

1.惰性删除(用到过期的key才会删除)
2.定时删除(定时批量的删除,不会全量删除)

6.什么是缓存雪崩以及解决方案

定义:在高并发下,大量的key在同一时间过期了,大量的请求直接落在数据库上,导致数据库宕机。
解决方案:
1.随机设置key过期时间,避免大量key集体失效。
2.不设置过期时间
3.使用定时任务,过期前刷新缓存。

7.什么是缓存穿透以及解决方案

定义:Redis和数据库都没有对应的key,导致查询Redis不存在,无法拦截,直接被穿透到数据库,导致数据库压力过大宕机
解决方案:
1.对于不存在的数据缓存到Redis中,设置一个短期过期时间
2.拉黑该IP
3.对数据做校验,校验不合法的key
4.使用布隆过滤器

8.什么是缓存击穿以及解决方案

定义:某一个热点数据的key在失效的一瞬间,瞬间大量的请求到数据库,导致数据库宕机
解决方案:
1.设置热点数据永不过期
2.加上互斥锁:在第一个线程查询数据库上的该条数据时加上锁,其他线程等待状态,查询后更新到数据库,后面的线程查询就会去查缓存了。

9.Redis和Memcached的区别

1.存储方式不同:Memcached把数据全部存在内存中,断电会挂掉,数据不能超过内存大小。Redis有部分数据持久化到硬盘上。
2.数据支持类型不同:Memcached支持的数据类型比较简单;Redis有复杂的数据类型。
3.使用的底层模型不同:

10.Redis的默认端口号是多少

6379

11.Redis作为分布式锁如底层是何实现

1.首先用setnx来保证,如果key不存在才能获得锁,如果key存在,则获取不到锁
2.然后要用rua脚本来保证多个Redis操作的原子性
3.同时要考虑到锁过期,使用一个看门狗的定时任务来监听锁是否需要续约

12.Redis数据和MySql如何保证数据同步

终极策略:延时双删(先删除Redis数据,再更新数据库,然后线程延时几百毫秒,最后再删一遍Redis数据)

13.Redis的集群方案

主从模式:上面有详细说明流程
哨兵模式:sentinel 是主从模式的升级版

14.为什么使用缓存

1.高性能
2.高并发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值