十一、Redis常见面试题

本文详细介绍了Redis的常见数据结构如String、Hash、List、Set和Zset的使用场景,并解析了Redis的单线程模型及其高效性的原因。此外,讨论了内存淘汰策略,包括LRU和LFU算法。针对大量键的查找和过期设置,提出了避免阻塞服务的解决方案。最后,列举了几款常用的Redis客户端如Jedis、Redisson和Lettuce的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、举例Redis每种数据结构的使用场景

1.1、String类型使用场景

  1. 信息缓存:如token、session
  2. 计数器:如记录用户的访问次数
  3. 分布式锁

1.2、Hash的使用场景

  • 以购物车为例,用户id为key,hash里面存储添加到购物车的商品id和对应的数量

1.3、List的使用场景

  • 定时排行榜。每隔一段时间计算出一个排行榜, 可将其存放在list中。不适用于实时排行榜。

1.4、Set的使用场景

  • 如音乐app中收藏的歌单可以使用set进行存储

1.5、Zset的使用场景

  • 实时排行榜。如音乐app中实时热门音乐榜单,key为榜单类型,歌曲id为value,歌曲热量为score。

二、Redis的线程模型

redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理。

如果面试官继续追问为啥 redis 单线程模型也能效率这么高?

  • 纯内存操作

  • 核心是基于非阻塞的 IO 多路复用机制

  • 单线程反而避免了多线程的频繁上下文切换问题

三、Redis的内存淘汰机制

当Redis缓存空间不足时,通过淘汰旧数据,可以清理缓存空间,从而可以加入新数据。对于缓存中的旧数据,redis有多种淘汰策略。这些淘汰策略主要可以分为几

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值