vlambda博客
学习文章列表

Redis 都不会?那还是别去面试了…


前不久,有一个读者在后台留言,说他面试 Java 开发工程师岗位时,居然大部分的面试问题都是关于 Redis 的,他都差点都忘记了自己应聘的是 Java 工程师了。而然这种现象在现在的后端面试中很常见,对 Redis 的掌握已经变成了一项后端工程师必须具备的基础技能。

当我们翻开那些大厂的招聘要求,你就知道 Redis 真的是一个后端通用技术,俗称通货膨胀下的硬通货。

Redis 作为一个高性能的分布式内存型数据库,被国内外几乎所有的大小型公司所使用,例如 Twitter、Stack Overflow、Github、阿里巴巴、腾讯、新浪微博等,它也早已成为互联网公司的标配,所以对 Redis 的掌握也成为后端工程师必备的基础技能,无论是面试还是实际工作中,我们每时每刻都需要和 Redis 打交道。

Redis 之所以如此流行,是因为它的高效性和简洁性,官方提供的 QPS(Query Per Second,每秒查询率)已经超过 10 万了,以下是官方提供的测试结果图:

Redis 都不会?那还是别去面试了…

其中横轴是连接数,纵轴是 QPS,有兴趣的同学可以去尝试一下 Redis 的基准测试程序。

但是除了高性能之外,Redis 还有一个重要的优点,它的版本更新速度很快,并且功能也越来越强大。比如之前只有 5 种数据类型,而到现在已经有 9 种数据类型。

之前最常用的功能是把它作为缓存数据库,而现在你可以使用它来实现消息队列了。比如之前只能单机模式运行,现在已经发展新增了集群模式运行了;再比如之前只能单一模式持久化,选择 RDB 或 AOF,现在已经可以混合持久化模式了。基本实现了鱼和熊掌兼得的境界,特别是集群功能和模块机制的引入,几乎让 Redis 拥有了无限扩展的能力。

这些强大有实用的功能就像一个巨大的宝藏,但对于 90% 的开发者来说,只是掌握了 Redis 最基础的 set 和 get 的方法,这让人感到非常的可惜。

而且 Redis 从 2.x 很快速的升级到 6.x 也只经历了短短的几年,但作为开源的高性能中间件的代表,目前在市面上关于它的核心与实战资料并不多,尤其是新版本的 Redis 实战资料。

所以为了让更多的开发朋友能够深入了解和熟练地使用 Redis,我结合自己使用了 9 年 Redis 经验开发了此专栏。希望这个专栏能够担负起让更多开发者更好地使用 Redis 的光荣使命,让你能更加快速和全面的掌握 Redis 的实际业务场景运用。

Redis 都不会?那还是别去面试了…

为什么要学这个专栏?

Redis 已经成为程序员必备的基础技能

Redis 从 2009 年发展到现在,已经被国内外几乎全部公司所使用,国内的 BATJ、新浪微博、360、小米;国外的微软、Twitter、Stack Overflow、Github、暴雪等公司都在使用这个技术栈。而且作者从业十余年的那些公司,无一例外也都在使用。所以,如果你想成为一名合格的工程师,Redis 是你必须要具备的基础技能,无论是实际工作中还是竞争激烈的面试中,它对你来说都非常的重要。

大部分人只会用 Redis 的 Key/Value 功能

我身边有很多朋友和同事,尽管已经有 5、6 年的工作经验了,但对于 Redis 的掌握仍处在最初级的阶段。例如,当存储一个用户信息时,只会把 User 对象先序列化成字符串,把字符串再存储到 Redis 中,然后查询的时候先从字符串中取出,再反序列化出来,其实我们完全可以使用 Hash 类型来存储用户信息,这样我们就省去了序列化和反序列化的麻烦,如下图所示:

Redis 都不会?那还是别去面试了…

Redis 还有很多高级功能他们都没有使用到,而这些功能都非常的实用也非常的重要,例如以下这几个:

  1. 主从复制、Redis Sentinel (哨兵) 和 Redis Cluster (集群);
  2. 稳定有消息确认 (ACK) 的消息队列 Stream;
  3. Redis 实现的延迟队列和定时任务;
  4. 亿万级数据查询、以及亿万级数据的秒去重;
  5. Redis 慢查询与性能优化;
  6. Redis 运行原理以及常用数据类型的内部实现。

掌握以上这些技能点,对你开发稳定并高效的程序有着至关重要的作用,同时也能为你成为架构师打好牢固的基础。

Redis 都不会?那还是别去面试了…

专栏设计思路

图文并茂,轻松易学

本专栏每篇文章都配有大量的图示,如下:

Redis 都不会?那还是别去面试了…
Redis 都不会?那还是别去面试了…
Redis 都不会?那还是别去面试了…

类似这样的图,文章里还有很多,力求让读者们能轻松的看懂所有内容。

环境搭建 + 使用 + 原理 + 代码实战

本专栏里面的所有知识点都以理论 + 实战的方式呈现。例如主从同步、哨兵、Redis 集群等功能都是先讲它们的搭建、再讲它们的运行原理、再结合 Java 代码完成相关的操作。通过这个的方式,力求把每一个知识点都讲透。让你知其然并知其所以然的同时,还能把每个知识点通过实战的方式串联起来,让你融会贯通的同时还能学有所用。

涉及了几乎所有的 Redis 核心功能

本专栏几乎包含了 Redis 的所有核心知识点,从单机到集群、从基础数据类型到高级特性、有消息队列还有全文搜索、慢查询、性能调优、还有 Redis 本身一些过期策略、内存淘汰策略的机制和算法等。

最高阶版本新特性

本专栏是结合最新版本 Redis 5.x 开发的,还包含一些 Redis 6.x 的预览特性。Redis 这几年版本的更新很快,从 2.x 到现在的 6.x (预览版) 也只有短短的几年时间。最近几年,Redis 的功能以及发生了很大的变化,例如 Redis 3 的集群模式、Redis 4 的混合持久化、Redis 5 的可靠消息队列等,都在本专栏涉猎范围之内。

专栏大纲

       基础篇

  1. Redis 是如何执行的?

  2. Redis 快速搭建与使用

  3. Redis 持久化——RDB

  4. Redis 持久化——AOF

  5. Redis 持久化——混合持久化

  6. 字符串使用与内部实现原理

  7. 附录:更多字符串操作命令

  8. 字典使用与内部实现原理

  9. 附录:更多字典操作命令

  10. 列表使用与内部实现原理

  11. 附录:更多列表操作命令

  12. 集合使用与内部实现原理

  13. 附录:更多集合操作命令

  14. 有序集合使用与内部实现原理

  15. 附录:更多有序集合操作命令

  16. Redis 事务深入解析

  17. Redis 键值过期操作

  18. Redis 过期策略与源码分析

    进阶篇

  19. Redis 管道技术——Pipeline
  20. 查询附近的人——GEO
  21. 优秀的基数统计算法——HyperLogLog
  22. 游标迭代器(过滤器)——Scan
  23. 内存淘汰机制与算法
  24. 消息队列——发布订阅模式
  25. 消息队列的其他实现方式
  26. 消息队列终极解决方案——Stream(上)
  27. 消息队列终极解决方案——Stream(下)

    实战篇

  28. 分布式锁详解与代码实战
  29. 布隆过滤器安装与使用及原理分析
  30. 实现延迟队列的两种方法—完整案例
  31. 定时任务案例实战
  32. RediSearch 高性能的全文搜索引擎
  33. Redis 性能测试实战
  34. Redis 慢查询实战
  35. Redis 性能优化实战方案
  36. Redis 主从同步实战
  37. Redis 哨兵模式实战(上)
  38. Redis 哨兵模式实战(下)
  39. Redis 集群模式实战(上)
  40. Redis 集群模式实战(下)
  41. Redis 问题汇总和相关解决方案
  42. 技能学习指南
  43. 加餐:Redis 的可视化管理工具

你能获得什么

  • 超越 90% 的开发者掌握 Redis 最核心的功能原理
  • 更多贴近业务所需的 Redis 实战应用经验
  • 掌握最高阶版 Redis 的特性和执行原理
  • 更快速排查 Redis 故障的能力
  • 获得 Redis 分布式集群使用经验

即日起至 3 月 10 日,《Redis 核心原理与实战》限时特惠!五折即可开启 Redis 学习之路,成功超越 90% 的开发者!


订阅专栏,即可进群与作者交流