Redis面试

一、概述

1、redis是什么?

2、redis的优缺点

3、为什么要使用缓存/为什么要使用redis

4、为什么使用redis,而不是map作为缓存

5、Redis为什么这么快

二、数据类型

6、Redis有哪些数据类型

7、Redis的使用场景

三、持久化

什么是Redis持久化

Redis的持久化机制是什么?各有什么优缺点?

如何选择合适的持久化方式?

Redis的动态扩容,缩容

四、过期键的删除策略

Redis过期键的删除策略

Redis 的过期时间和永久有效如何设置?

五、内存相关

MySQL中有2000w数据,redis中只存20w数据,如何保证redis中的数据都是热点数据

redis内存数据集上升到一定大小的时候,就会实行数据淘汰策略

Redis的内存淘汰策略有哪些?

Redis的内存淘汰策略是指在Redis用于缓存的内存不足时,怎么处理需要新写入且需要申请额外空间的数据。

Redis消耗什么物理资源?

Redis的内存用完了会发生什么?

Redis如何做内存优化?

六、线程模型

Redis的线程模型

七、事务

redis事务的概念

redis事务的三个阶段

redis事务相关命令

事务四个特性?Redis支持哪些特性?

Redis事务支持隔离性吗?

Redis事务保证原子性吗,支持会滚吗?

Redis事务的其他实现

八、集群方案

哨兵模式

分片集群 (Redis Cluster)

主从模式

生产环境 Redis 是怎么部署的?

说说Redis哈希槽的概念?

Redis 集群会有写操作丢失吗?为什么?

Redis集群之间是如何复制的?

Redis集群最大的节点个数是多少?

Redis集群如何选择数据库?

九、分区

Redis是单线程的,如何提高多核cpu的利用率?

为什么要做Redis分区

主要解决两个问题

  • 海量数据存储
  • 高并发写的问题

Redis分区有什么优缺点

缺点:
1、备份必须要操作多个实例上的RDB或者AOF文件
2、同时操作多个key,不能使用Redis事务

十、分布式问题

Redis实现分布式锁

Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接不存在竞争关系,使得Redis中可以使用SETNX命令实现分布式锁

使用SETNX完成同步锁的流程:
使用SETNX获取锁,若返回0(key存在,锁已存在)则获取失败,反之获取成功

【注意】
为了防止获取锁后程序出现异常导致进入死锁状态,需要为key设置一个过期时间。如果需要释放锁,直接将key删除

如何解决Redis并发竞争key的问题

Redis的并发竞争key的问题就是多个系统同时对key进行操作,但是执行的顺序和我们期望的顺序不同,这也就导致了结果的不同

【zookeeper实现分布式锁】

分布式Redis是前期做还是后期规模上来了做好?

什么是RedLock

Redis官方提出了一种权威的基于Redis实现分布式锁的方式,名为RedLock,此种方式比原先的单节点的方法更安全
。它可以保证以下特性。

十一、缓存异常

缓存穿透

含义: 是指查询一个不存在的数据,数据库无此记录,我们没有将此次查询的null写入缓存;这将导致每次去查询这个不存在的数据时都需要去数据库查询,失去了缓存的意义

风险:利用不存在的数据进行攻击,使数据库压力瞬间增大,最终导致崩溃

解决:将null结果也进行缓存,并加入过期时间

缓存击穿

对于一些设置了过期时间的缓存热点数据(这些数据可能在某些时间内被超高并发的访问,是一种非常热点的数据);如果这个key在大量请求同时进来前刚好失效,那么对这个key的数据查询都落到db,我们称之为缓存击穿

解决:大量并发请求时,只让一个人去查,其他人等待,查询到以后释放锁;其他人获取到锁,先查询缓存,如果缓存有数据,就不用去db查询

缓存雪崩

缓存雪崩是指我们在设置缓存key时,采用了相同的过期时间,若缓存在某一时刻同时失效,请求全部转发到db,db压力瞬时过重导致雪崩

在原有失效时间的基础上增加一个随机值(比如1-5分钟随机),这样每个缓存的过期时间的重复率就会降低,很难引发集体失效的事件

缓存预热

十二、常用工具

Redis常用的客户端

Redisson、Jedis、lettuce

Redisson 如何使用

十三、其他问题

Redis和 Memcached的区别

如何保证缓存和数据库数据的一致性

使用Redis做过异步队列吗

Redis如何实现延时队列

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值