redis面试cheatsheet

互联网侦察

共 1980字,需浏览 4分钟

 ·

2021-11-15 13:52




本文总结一下redis面试中常见考点,如果细节不懂可以自行搜索相关文章进行详细了解。
后续如果还有其他常见题还会进行补充,欢迎大家持续关注。


redis的几种数据结构?

string、list、hash、set、sorted set
string是二进制安全的,底层用的是sds(简单动态字符串,自己实现的数据结构)
list可以支持左右插入和删除,底层是双向链表
hash、set底层是hashtable,通过挂链表解决冲突问题
sorted set有一个score来进行排序,底层是跳表
ziplist对数据做了一些编码,提高内存使用率,在list,hash,sorted set初始时都是ziplist存储,达到某些条件才转换成正常数据结构。


redis脚本如何使用?

使用lua解释器来执行脚本,使用eval命令
脚本可以方便地实现很多功能,比如唯一队列
lua可以保证命令的原子性


redis实现分布式锁?

加锁:setnx,注意要有过期时间,防止一直死锁
过期时间可以随机,防止雪崩
set key value ex nx
释放锁:get & del,为了保证原子性,放在lua里执行


java常用的redis客户端?

jedis:阻塞IO,同步,线程不安全,需要连接池,仅支持基本数据类型
lettuce:异步,线程安全,基于netty框架的事件驱动,可以用单个lettuce连接来完成各种操作。
redission:和lettuce类似,还提供了很多分布式服务。
springboot中用rest template,底层默认是lettuce。


redis单线程?

redis在进行数据操作的时候是单线程,用队列将并行变成串行,因为数据都在内存中,单线程操作不需要切换上下文,不需要加锁,效率最高。
对于数据在磁盘或者网络这种IO比较慢的可以考虑多线程。


redis过期策略?

惰性删除,过期了不删,get的时候删除。缺点是如果不get就会一直留在内存中。
定期删除,可以在redis.conf里面配置频率或者内存最大值。
redis采用惰性删除+定期删除


redis持久化方案?

首先,redis的优势不在持久化,而在缓存功能,强依赖持久化可以用数据库,放在redis的数据必须考虑它可能会丢失。
RDB:定期存储,保存数据本身
AOF:保存写操作日志
AOF一般大于RDB,性能更低。


redis雪崩,击穿?

击穿:key过期,key被淘汰。从数据库重新load值。
雪崩:大量key在同一时间过期。
如果key过期与时间无关,可以用随机过期时间
如果不行,根据业务,第一个线程更新所有key


redis发布订阅底层如何实现的?

subcribe channel
publish channel message
服务端进程中有一个字典,保存了每个channel订阅的client list,publish channel message的时候,服务端会找到所有订阅channel的client,进行消息发送。


redis运维常用方法

连接可以用cli,没装cli也可以用telnet连接
info memory查看内存
线上keys *等命令非常危险,数据量大的时候容易阻塞,可以通过重命名或者禁用危险命令。


redis做了哪些提升性能的事情?

redis单线程模型
redis管道,多条命令打包一次性发送给服务端
ziplist提高存储效率


redis集群模式

主从模式:master读写,slave只读,master同步数据到slave,master挂了不会再提供写服务,也不会重新选举master,只能等master恢复
哨兵模式:基于主从模式之上,加入哨兵,哨兵会重新选举master。哨兵也可以是集群,哨兵每秒发送PING命令给master,slave和哨兵。哨兵发现PING命令没有返回会认为主观下线,向其他哨兵确认,超过一定数量主观下线后会认为客观下线。在这种模式下,客户端连接哨兵。
集群模式:如果数据量过大,单机放不下,就需要集群模式,该模式会将数据分片
现在大家一般用云上redis,很少自己搭建集群了。


考点:一致性Hash,问集群模式的时候可能会问到一致性Hash。

数据Hash对2^32取模,节点Hash对2^32取模,映射到Hash环上,数据顺时针找到最近节点进行存储。主要解决节点增加或者减少,不会导致大量数据缓存失效,造成雪崩。数据倾斜问题可以用虚拟节点解决。


redis适用场景?

分布式锁
session共享,如单点登录
分布式业务缓存
排行榜sorted set
简单消息,发布订阅


浏览 35
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报