redis面试题

这里写目录标题

  • redis基本数据类型
  • Redis数据结构,雪崩和击穿

redis基本数据类型

Redis是一种高速缓存数据库
Remote Dictionary Server,直译为:远程字典服务
Redis 是C语言开发的一个开源高性能键值对的内存数据库,可以用来做数据库缓存消息中间件等场景,是一种NoSQL(not-only sql,非关系型数据库)的数据库
优秀的性能,数据是存储在内存中,读写速度非常快,可支持并发10W QPS
特点

  • 单线程但进程,是线程安全的,采用IO 多路复用制
  • 可作为分布式锁
  • 支持五种数据类型
  • 支持数据持久化到磁盘
  • 可以作为消息中间件使用,支持消息发布及订阅

五种数据类型:
字符串、哈希、列表、有序集合、无序集合
redis面试题_第1张图片

Redis数据结构,雪崩和击穿

原理: Redis是一种基于内存的数据存储系统,支持多种数据结构,例如字符串、哈希、列表、集合、有序集合等。
Redis的雪崩和击穿是指在高并发的情况下,缓存数据突然失效,导致大量请求直接访问数据库,造成数据库宕机的现象。

应用: 为了防止Redis的雪崩和击穿,可以采取以下方法:1.使用多个Redis节点进行数据备份,避免单点故障;2.设置缓存数据的过期时间,防止数据过期导致缓存失效;3.使用Redis集群来提高缓存的可用性和可靠性;4.使用Redis Sentinel来监控Redis节点的状态,及时发现并处理节点故障。

Redis雪崩和击穿是两种在高并发环境下可能出现的问题,都与缓存相关。

  1. Redis雪崩当大量缓存中的数据同时过期或失效,并且此时有大量的请求访问这些数据时,会导致请求直接落到数据库上,从而造成数据库压力剧增,甚至导致数据库宕机。这种情况称为Redis雪崩。

解决方案:

  • 设置合理的缓存过期时间,避免大量数据同时失效。
  • 使用分布式锁来保护缓存数据的加载,只有一个线程能够重新生成缓存内容。
  • 使用热点数据预加载,在缓存即将过期之前提前刷新缓存数据。
  1. Redis击穿:当某个热点数据过期或不存在时,同时有大量的请求访问该数据,这些请求都会直接落到数据库上,从而导致数据库负载过高,甚至引起数据库宕机。这个过程就像是被子弹击穿了一样,所以称为Redis击穿。

解决方案:

  • 使用互斥锁(Mutex Lock)来保护对热点数据的访问,当多个请求同时访问同一个热点数据时,只有一个线程能够去加载数据,其他线程等待获取数据后再返回。
  • 针对热点数据,可以设置永不过期,或者设置较长的过期时间,以避免频繁地查询数据库。

需要注意的是,解决Redis雪崩和击穿问题并不是一种通用的方案,具体的解决方法需要根据业务场景和需求进行调整和实现。

你可能感兴趣的:(面试题,redis,数据库,缓存)