【吊打面试官】redis大厂高频面试题和答案
概述
1、什么是Redis
2、Redis有哪些优缺点
3、为什么要用 Redis /为什么要用缓存
4、为什么要用 Redis 而不用 map/guava 做缓存?
5、Redis为什么这么快
数据类型
1、Redis有哪些数据类型
2、Redis的应用场景
持久化
1、什么是Redis持久化?
2、Redis 的持久化机制是什么?各自的优缺点?
3、如何选择合适的持久化方式
4、Redis持久化数据和缓存怎么做扩容?
5、过期键的删除策略
6、Redis的过期键的删除策略
7、Redis key的过期时间和永久有效分别怎么设置?
8、我们知道通过expire来设置key 的过期时间,那么对过期的数据怎么处理呢?
内存相关
1、MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据
2、Redis的内存淘汰策略有哪些
3、Redis主要消耗什么物理资源?
4、Redis的内存用完了会发生什么?
5、Redis如何做内存优化?
线程模型
1、Redis线程模型
事务
1、什么是事务?
2、Redis事务的概念
3、Redis事务的三个阶段
4、Redis事务相关命令
5、事务管理(ACID)概述
6、Redis事务支持隔离性吗
7、Redis事务保证原子性吗,支持回滚吗
8、Redis事务其他实现
集群方案
1、哨兵模式
2、官方Redis Cluster 方案(服务端路由查询)
3、基于客户端分配
4、基于代理服务器分片
Redis 主从架构
1、Redis集群的主从复制模型是怎样的?
2、生产环境中的 redis 是怎么部署的?
3、说说Redis哈希槽的概念?
4、Redis集群会有写操作丢失吗?为什么?
5、Redis集群之间是如何复制的?
6、Redis集群最大节点个数是多少?
7、Redis集群如何选择数据库?
分区
1、Redis是单线程的,如何提高多核CPU的利用率?
2、为什么要做Redis分区?
3、你知道有哪些Redis分区实现方案?
4、Redis分区有什么缺点?
分布式问题
1、Redis实现分布式锁
2、如何解决 Redis 的并发竞争 Key 问题
3、分布式Redis是前期做还是后期规模上来了再做好?为什么?
4、什么是 RedLock
缓存异常
1、缓存雪崩
2、缓存穿透
3、缓存击穿
4、缓存预热
5、缓存降级
6、热点数据和冷数据
7、缓存热点key
常用工具
1、Redis支持的Java客户端都有哪些?官方推荐用哪个?
2、Redis和Redisson有什么关系?
3、Jedis与Redisson对比有什么优缺点?
其他问题
1、Redis与Memcached的区别
2、如何保证缓存与数据库双写时的数据一致性?
3、Redis常见性能问题和解决方案?
4、Redis官方为什么不提供Windows版本?
5、一个字符串类型的值能存储最大容量是多少?
6、Redis如何做大量数据插入?
7、假如Redis里面有1亿个key,其中有10w个key是以某个固定的已知的前缀开头的,如果将它们全部找出来?
8、使用Redis做过异步队列吗,是如何实现的
9、Redis如何实现延时队列
10、Redis回收进程如何工作的?
11、Redis回收使用的是什么算法?
答案如下
什么是Redis
Redis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。
Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。
与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。另外,Redis 也经常用来做分布式锁。除此之外,Redis 支持事务 、持久化、LUA脚本、LRU驱动事件、多种集群方案。
Redis有哪些优缺点
优点:
读写性能优异, Redis能读的速度是110000次/s,写的速度是81000次/s。
支持数据持久化,支持AOF和RDB两种持久化方式。
支持事务,Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。
数据结构丰富,除了支持string类型的value外还支持hash、set、zset、list等数据结构。
支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。
缺点:
数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。
Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的IP才能恢复。
主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性。
Redis 较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。
关注回复【资料】领取完整答案
资料详细截图如下:
查看12道真题和解析