Redis基础面试题(简单版)

tech2022-09-27  100

什么是Redis? Redis是基于内存的非关系型数据库,速度快,单线程,支持高并发。Redis的五种数据类型? String、Hash、Set、Zset(SortedSet)、List为什么Redis单线程还这么块? ① 完全基于内存操作 ② 数据结构简单 ③ 采用单线程 ④ 多路I/O复用模型、非阻塞IO为什么要使用Redis? ① 性能高,运行在内存中,速度非常快 ② 在高并发情况下,所有请求直接访问数据库,服务器压力过大,可能会出现宕机Redis的应用场景? ① 缓存,对于频繁查询而且变动不是很频繁的数据 ② 点击率,排行榜,redis是原子性的,自增,避免并发问题 ③ Set可以做交集,并集,两集合相减等操作 ④ 购物车 ⑤ Session共享,集群情况下部署了多台Tomcat,同一个用户可能请求的节点不同,redis可以解决Session同步的问题Redis的持久化? ① RDB:Redis Data Base 快照,将某个时间点所有的数据存放到硬盘上,数据可能会丢失 ② AOF: Append Only File 对于操作命令进行保存,always,每个命令都保存,everysec(推荐),系统崩溃时最多丢失一秒钟的数据,no由系统来决定Redis缓存穿透,缓存雪崩,缓存击穿? ① 缓存穿透:频繁访问数据库中不存在的数据,请求会穿过Redsi,查询不到后,请求落在数据库上。 ② 缓存雪崩:项目上线时,设置缓存用了相同的过期时间,可能会在同一时刻出现大面积缓存过期,大量请求落到数据库,导致数据库宕机 ③ 缓存击穿:高并发下访问一个热点数据,数据失效的时候,击穿缓存,转而请求数据库。Redis缓存穿透,缓存雪崩,缓存击穿的解决方案? (简单) ① 缓存穿透:频繁访问数据库中不存在的值,会穿透redis,访问数据库,查询不到值得时候,设置一个null到缓存中,设置60秒 ② 缓存雪崩:缓存得数据过期时间设置为随机。 ③ 缓存击穿:热点数据设置永不过期。Redis和数据库双写一致性问题? 无法完全避免 先更新数据库,再删除缓存(回答这个) ① 缓存刚好失效 ② 线程A穿过缓存,查询数据库,得到一个旧值 ③ 线程B将新值写入数据库,线程B删除缓存 ④ 线程A将查到的旧值写入缓存 先删除缓存,再更新数据库 ① 线程A删除了缓存 ② 线程B查询,缓存不存在,查询数据库得到旧值写入缓存 ③ 线程A将新值写入数据库 10.Redis的过期策略以及内存淘汰机制? 不了解Redis的数据淘汰机制 没有深入了解过,待补充
最新回复(0)