redis面试题

redis基本数据类型

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

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

五种数据类型:
字符串、哈希、列表、有序集合、无序集合
在这里插入图片描述

Redis数据结构,雪崩和击穿

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

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

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

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

解决方案:

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

解决方案:

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值