Java面试八股文(2023最新)--Redis面试题

目录

1. 什么是Redis?

2. Redis的优缺点?

3. Redis有哪些数据结构?

4. Redis的应用场景

5. 持久化?

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

7. Redis 的过期删除策略?

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

9. Redis的事务保证原子性吗,支持回滚吗?

10. 什么是Redis穿透?

10. 什么是Redis击穿?

11. 什么是redis雪崩?

12. 使用Redis作为缓存,Redis和mysql数据库一致性如何实现?

13. Redis使用规范


1. 什么是Redis?

  • Redis是一个使用C语言写成的,开源的高性能key-value非关系缓存数据库,它支持存储的value类型相对更多,包括:string(字符串),list(链表),set(集合),hash(哈希类型),zset(sorted set --有序集合)。Redis的数据都基于缓存,Redis的操作都是原子性的。

2. Redis的优缺点?

  • 优点:
    • 读写性能优异。
    • 支持数据持久化,支持AOF和RDB两种持久化方式。
    • 支持事务,Redis的所有操作都是原子性的,同时Redis还支持对几个操作合并后的原子性执行。
    • 数据结构丰富,除了支持string类型的value外还支持hash,set,zset,list等。
    • 支持主从复制,主机自动将数据同步到从机,进行读写分离。
  • 缺点:
    • 数据库容易受到内存容量的限制,不能用作海量数据的高性能读写,因此redis适合的场景主要局限在较小的数据量的高性能操作和运算。
    • Redis不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的ip才能恢复。
    • 主机宕机,宕机前有部分数据未能及时同步到从机,切换ip还会引入数据不一致的问题,降低了系统的可用性。
    • Redis较难支持在线扩容,在集群容量达到上限,在线扩容就会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。

3. Redis有哪些数据结构?

Redis的数据结构主要有5种:string,set,zset,list,hash

数据类型 可存储的值 操作 应用场景
string 字符串,整数,浮点数 对整个字符串或者字符串的其中一部分执行操作,对整数和浮点数执行自增或自减操作 简单的键值对缓存
set 无序集合 检查一个元素是否存在于集合,计算交集并集差集,从集合随机获取元素 交集,并集,差集操作,比如交集,可以把两个人的粉丝列表弄一个交集
zset 有序集合 添加,获取,删除元素,根据分值范围或成员来获取元素,计算一个键的排名 去重但可以排序,例如排行榜
list 列表 从两端压入或弹出元素,对单个或多个元素进行修剪,只保留一个范围内的元素 存储一些列表的数据结构,类似粉丝列表,文章评论列表等
hash 包含键值对的无序集合 添加,获取,移除单个键值对,获取所有键值对,检查某个键是否存在

你可能感兴趣的:(面试,java,redis,面试)