redis高频面试题
- 1.说说你对redis的理解
- 2.什么是热key?如何解决热key问题?
- 3.一个Redis示例最多能放多少个key?
- 4.Redis为什么这么块?
- 5.怎么实现Redis的高可用?
- 6.Redis是单线程还是多线程
- 7.说说 Redis 的数据类型
- 8.说说Redis的持久化机制
- 9.说说Redis的过期策略
- 10.说说Redis的内存淘汰策略
- 11 Redis有哪些常用应用场景
- 12.什么是缓存击穿、缓存穿透、缓存雪崩
- 13 Redis 集群的原理是什么
- 14 说说你对PIPELINE的理解
- 15 说说你对缓存双写不一致的理解
- 16 Redis集群会有写操作丢失吗?为什么
- 17 Redis集群方案什么情况下会导致整个集群不可用
1.说说你对redis的理解
redis是一个基于key-value存储结构的开源内存数据库,也是一种nosql数据库。
他支持多种数据类型,比如string,hash,set,sortedSet,list等
Redis以内存存储和优化数据结构为基础,提供了快速读写性能和高效的数据访问。常被用于与数据库直接的缓存组件,提升IO效率。
此外Redis还支持主从复制,哨兵机制和集群方式,实现高可用和水平扩展。
总而言之,Redis是一款功能强大,;灵活且可靠的数据库解决方案,试用于各种企业级开发场景。
2.什么是热key?如何解决热key问题?
1.什么是热key?
热key是指在缓存系统中,某些特定的缓存key受到高频访问,导致对热门数据的读取/写入操作集中在少数几个缓存节点上,使得这些节点的负载过高,而其他节点负载较轻甚至空闲。会导致系统性能不均衡,可能会导致部分请求响应变慢或服务不可用。
2.如何解决热key问题
- 可以将相同的value设置多个key,使得多个key查询出来的数据一致,根据key的hash值将数据分散存储到多个节点上。通过增加缓存节点的数量,让请求更均匀的分布在各个节点上,减轻热key对单个节点的压力。
- 将数据按照特定规则拆分成多个片段,分别存储在不同的缓存节点上;
3.一个Redis示例最多能放多少个key?
Redis每个示例最多可以放2^32-1个keys,大约42亿个key
4.Redis为什么这么块?
1.内存存储: Redis数据存储在内存中,避免了磁盘IO;
- 单线程模型: Redis执行命令是单线程的,避免了线程抢占和切换代来的性能消耗
- 高效的数据结构: Redis内部使用了高效的数据结构,如哈希表,跳跃表等
4.异步IO: 采用IO多路复用模型,能够快速的处理大量的连接,并使用reator模型,能够并发的处理连接以及对连接进行响应,但是内部执行命令还是单线程的 - 优化操作: Redis对常用操作进行了优化,如批量操作和管道技术,减少了网络通信带来的开销
5.怎么实现Redis的高可用?
- 主从复制: 通过设置主从复制,将主节点的数据同步到多个从节点;主节点负责处理写操作,并将操作日志同步给从节点,从节点负责处理读请求。如果主节点发生 故障,可以将从节点升级为主节点,从而实现故障转移和高可用。
- 哨兵机制: 使用Redis哨兵监控主节点和从节点的状态。哨兵是一组独立的运行进程,他会监控Redi实例的健康状态,并在主节点发生故障时自动进行故障转移。他还能监控从节点,并在需要的适合将其提升为主节点。
- 集群模式: Redis 集群是一种分布式方案,可以将多个Redis节点组成一个逻辑集群,提供数据分片和自动故障恢复。每个节点负责存储和处理部分数据,通过节点间的数据分片和分布式算法保证数据的可用性和负载均衡。当集群中的某个节点出现故障时,集群会自动进行故障转移和恢复。
6.Redis是单线程还是多线程
执行命令是单线程的,但是为使用额外的线程来处理连接(6.0以后),持久化,主从同步和异步删除,因此,严格来说,redis并不是单线程的。
<