Redis 都不会?那还是别去面试了…
前不久,有一个读者在后台留言,说他面试 Java 开发工程师岗位时,居然大部分的面试问题都是关于 Redis 的,他都差点都忘记了自己应聘的是 Java 工程师了。而然这种现象在现在的后端面试中很常见,对 Redis 的掌握已经变成了一项后端工程师必须具备的基础技能。
当我们翻开那些大厂的招聘要求,你就知道 Redis 真的是一个后端通用技术,俗称通货膨胀下的硬通货。
Redis 作为一个高性能的分布式内存型数据库,被国内外几乎所有的大小型公司所使用,例如 Twitter、Stack Overflow、Github、阿里巴巴、腾讯、新浪微博等,它也早已成为互联网公司的标配,所以对 Redis 的掌握也成为后端工程师必备的基础技能,无论是面试还是实际工作中,我们每时每刻都需要和 Redis 打交道。
Redis 之所以如此流行,是因为它的高效性和简洁性,官方提供的 QPS(Query Per Second,每秒查询率)已经超过 10 万了,以下是官方提供的测试结果图:
其中横轴是连接数,纵轴是 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 从 2009 年发展到现在,已经被国内外几乎全部公司所使用,国内的 BATJ、新浪微博、360、小米;国外的微软、Twitter、Stack Overflow、Github、暴雪等公司都在使用这个技术栈。而且作者从业十余年的那些公司,无一例外也都在使用。所以,如果你想成为一名合格的工程师,Redis 是你必须要具备的基础技能,无论是实际工作中还是竞争激烈的面试中,它对你来说都非常的重要。
大部分人只会用 Redis 的 Key/Value 功能
我身边有很多朋友和同事,尽管已经有 5、6 年的工作经验了,但对于 Redis 的掌握仍处在最初级的阶段。例如,当存储一个用户信息时,只会把 User 对象先序列化成字符串,把字符串再存储到 Redis 中,然后查询的时候先从字符串中取出,再反序列化出来,其实我们完全可以使用 Hash 类型来存储用户信息,这样我们就省去了序列化和反序列化的麻烦,如下图所示:
Redis 还有很多高级功能他们都没有使用到,而这些功能都非常的实用也非常的重要,例如以下这几个:
-
主从复制、Redis Sentinel (哨兵) 和 Redis Cluster (集群); -
稳定有消息确认 (ACK) 的消息队列 Stream; -
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 的可靠消息队列等,都在本专栏涉猎范围之内。
专栏大纲
基础篇
Redis 是如何执行的?
Redis 快速搭建与使用
Redis 持久化——RDB
Redis 持久化——AOF
Redis 持久化——混合持久化
字符串使用与内部实现原理
附录:更多字符串操作命令
字典使用与内部实现原理
附录:更多字典操作命令
列表使用与内部实现原理
附录:更多列表操作命令
集合使用与内部实现原理
附录:更多集合操作命令
有序集合使用与内部实现原理
附录:更多有序集合操作命令
Redis 事务深入解析
Redis 键值过期操作
Redis 过期策略与源码分析
进阶篇
-
Redis 管道技术——Pipeline -
查询附近的人——GEO -
优秀的基数统计算法——HyperLogLog -
游标迭代器(过滤器)——Scan -
内存淘汰机制与算法 -
消息队列——发布订阅模式 -
消息队列的其他实现方式 -
消息队列终极解决方案——Stream(上) -
消息队列终极解决方案——Stream(下)
实战篇
-
分布式锁详解与代码实战 -
布隆过滤器安装与使用及原理分析 -
实现延迟队列的两种方法—完整案例 -
定时任务案例实战 -
RediSearch 高性能的全文搜索引擎 -
Redis 性能测试实战 -
Redis 慢查询实战 -
Redis 性能优化实战方案 -
Redis 主从同步实战 -
Redis 哨兵模式实战(上) -
Redis 哨兵模式实战(下) -
Redis 集群模式实战(上) -
Redis 集群模式实战(下) -
Redis 问题汇总和相关解决方案 -
技能学习指南 -
加餐:Redis 的可视化管理工具
你能获得什么
-
超越 90% 的开发者掌握 Redis 最核心的功能原理 -
更多贴近业务所需的 Redis 实战应用经验 -
掌握最高阶版 Redis 的特性和执行原理 -
更快速排查 Redis 故障的能力 -
获得 Redis 分布式集群使用经验
即日起至 3 月 10 日,《Redis 核心原理与实战》限时特惠!五折即可开启 Redis 学习之路,成功超越 90% 的开发者!