剑指 Offer:Redis 的 14 大使用场景!

剑指 Offer:Redis 的 14 大使用场景!

大家好,又见面了,我是全栈君。

昨天一位网友在面试腾讯中被问到了,Redis 是单线程的,为什么还那么快?他回答的不是很好,而且面试官也善意的提醒了一些关键点,但是由于他没准备,所以再次失败了。

关于这个问题,我其实在一年前就写过这个答案《Redis 是单线程结构,但为何单线程还能支持高并发?》。

今天我们来讨论另外一个关于 Redis 的高频面试题:Redis 的使用场景有哪些?

 

 

剑指 Offer:Redis 的 14 大使用场景!

这个问题其实很套路。第一个回答往往都会是“缓存”。缓存确实是 Redis 使用最多的领域,但是这个回答往往会被面试官引导到其他技术上,比如:Memcache。也或者会问缓存一致性问题。

如果你回答的不是很好,面试官可能会问,Redis 还有哪些使用场景?或者说 Redis 可以用来做什么?

一部分人可能会回答:分布式锁。说到这个,面试官可能就会问,怎么实现?原理是什么?有什么缺陷等,一回头发现自己又跳坑里了。

所以,今天我就抽个一点时间,根据以前我做电商的经验。分享一下 Redis 的 10 大使用场景。

1、记录帖子或者文章的点赞数、评论数和点击数 (hash)。

2、记录用户的帖子 ID 列表 (排序),便于快速显示用户的帖子列表 (zset)。

3、记录帖子的标题、摘要、作者和封面信息,用于列表页展示 (hash)。

4、记录帖子的点赞用户 ID 列表,评论 ID 列表,用于显示和去重计数 (zset)。

5、缓存近期热帖内容 (帖子内容空间占用比较大),减少数据库压力 (hash)。

6、记录帖子的相关文章 ID,根据内容推荐相关帖子 (list)。

7、如果帖子 ID 是整数自增的,可以使用 Redis 来分配帖子 ID(计数器)。

8、收藏集和帖子之间的关系 (zset)。

9、记录热榜帖子 ID 列表,总热榜和分类热榜 (zset)。

10、缓存用户行为历史,进行恶意行为过滤 (zset,hash)。

11、秒杀,抢购(分布式锁)。

12、会话、热点数据(缓存)。

13、收藏商品,聊天,群聊,发布与订阅(pub/sub)。

14、系统解耦,队列(lpush、rpop)。

另外还有一些场景,我没列举到。只要你能回答到上面这些,基本上面试问题不大。但是,我们也要注意,不要刻意的为了使用某一个功能,而故意使用某项技术。比如,Redis 的作者就不推荐在队列等方面使用 Redis 来做。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112064.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • unity3d 学习笔记(一)

    unity3d 学习笔记(一)

    2021年12月1日
    38
  • Supplier接口

    Supplier接口目录一 Supplier 接口源码二 Supplier 示例三 其他 Supplier 接口一 Supplier 接口源码 publicinterf T Getsaresult returnaresul Tget Supplier 接口是一个供给型的接口 本质就是一个容器 可以用来存储数据 或者是产生数据的规则 然后可以供其 T

    2025年6月11日
    1
  • javaSocket传输模式

    javaSocket传输模式Sockets有两种主要的操作方式:面向连接的和无连接的.面向连接的sockets操作就像一部电话,他们必须建立一个连接和一人呼叫.所有的事情在到达时的顺序与它们出发时的顺序时一样.无连接的sockets操作就像是一个邮件投递,,没有什么保证,多个邮件可能在到达时的顺序与出发时的顺序不一样.到底用哪种模式是邮应用程序的需要决定的.如果可靠性更重要的话,用面向连接的操作会好一些.比如文件服务器需要他们

    2022年6月24日
    24
  • 暗影骑士擎bios详解_runloop原理和机制

    暗影骑士擎bios详解_runloop原理和机制Runloop什么是Runloop?从字面上讲就是运行循环。它内部就是do-while循环,在这个循环内部不断地处理各种任务。一个线程对应一个RunLoop,主线程的RunLoop默认已经启动,子线程的RunLoop得手动启动(调用run方法)RunLoop只能选择一个Mode启动,如果当前Mode中没有任何Source(Sources0、Sources1)、Timer,那么就直接退

    2025年7月5日
    3
  • 虚拟机搭建web服务器

    虚拟机搭建web服务器虚拟机搭建web服务器描述:把主机的项目部署到虚拟机Linux系统下,并且可以在主机上访问得到一、首先下载虚拟机链接:https://blog.csdn.net/felix__h/article/details/82853501二、下载Linux镜像文件链接:https://pan.baidu.com/s/12vA9yELUWV_nRNDHJaOmWw密码:a1yz三、打开下载好的…

    2022年5月27日
    47
  • 开发一款Android App,从零开始详细讲解[通俗易懂]

    开发一款Android App,从零开始详细讲解[通俗易懂]入门篇:第一篇:开发环境篇第二篇:材料设计篇第三篇:规范开发篇第四篇:从项目开发到上架篇(篇章调整,最后更新)进阶篇:第五篇:设计模式篇第六篇:网络请求篇(上)    网络请求篇(下)第七篇:图片处理篇第八篇:数据库篇第九篇:开源资源篇高阶篇:第十篇:自定义控件篇第十一篇:跨进程篇关于Demo写这个系列的文章的同时,也在做一个小Demo。功能很简单,利用豆瓣电影Api实现一款基于Android的电影集合的App。starmeonGitHub! 该项目的数据源来自于豆瓣;

    2022年5月4日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号