redis底层原理解密

0.前言

最近一周没有技术文章产出,主要是Q4马上结束各种业务都在冲量,笔者一直都在疯狂工作甚至还有些焦虑到偶尔失眠,由于没有成块的时间研究新东西,所以就把之前看过的东西抽时间总结了下。

计划分三篇来梳理Redis的相关热点问题,本次为开山底层实现篇,通过本文你将了解到以下内容:

  • Redis的作者、发展演进和江湖地位

  • Redis面试问题的概况

  • Redis底层实现相关的问题包括:

      **常用数据类型底层实现、SDS的原理和优势、字典的实现原理、跳表和有序集合的原理、Redis的线程模式和服务模型**
    

温馨提示
内容并不难,就怕你不看

看不懂可以先收藏先Mark,等到深入研究的时间再翻出来看看,你就发现真是24K干货呀!停止吹嘘,写点不一样的文字吧!

1.Redis往事

Redis是一个使用ANSI C编写的开源、支持网络、基于内存、可选持久化的高性能键值对数据库。Redis的之父是来自意大利的西西里岛的
Salvatore Sanfilippo,Github网名antirez,笔者找了作者的一些简要信息并翻译了一下,如图:

从2009年第一个版本起Redis已经走过了10个年头,目前Redis仍然是最流行的key-value型内存数据库的之一。

优秀的开源项目离不开大公司的支持,在2013年5月之前,其开发由
VMware赞助,而2013年5月至2015年6月期间,其开发由
毕威拓赞助,从2015年6月开始,Redis的开发由
Redis Labs赞助。

笔者也使用过一些其他的NoSQL,有的支持的value类型非常单一,因此很多操作都必须在客户端实现,比如value是一个结构化的数据,需要修改其中某个字段就需要整体读出来修改再整体写入,显得很笨重,但是Redis的value支持多种类型,实现了很多操作在服务端就可以完成了,这个对客户端而言非常方便。

当然Redis由于是内存型的数据库,数据量存储量有限而且分布式集群成本也会非常高,因此有很多公司开发了基于SSD的类Redis系统,比如
360开发的SSDB、Pika等数据库
,但是笔者认为
从0到1的难度是大于从1到2的难度
的,毋庸置疑Redis是NoSQL中浓墨重彩的一笔,值得我们去深入研究和使用。

2.Redis的江湖地位

Redis提供了Java、C/C++、C#、 PHP 、JavaScript、 Perl 、Object-C、Python、Ruby、Erlang、Golang等
多种主流语言的客户端
,因此无论使用者是什么语言栈总会找到属于自己的那款客户端,受众非常广。

笔者查了datanyze.com网站看了下Redis和MySQL的
最新市场份额和排名
对比以及
全球Top站点的部署量
对比(网站数据更新到写作当日2019.12.11):


可以看到
Redis总体份额排名第9并且在全球Top100站点中部署数量与MySQL基本持平
,所以Redis还是有一定的江湖地位的。

3.聊聊实战

目前Redis发布的稳定版本已经到了5.x,功能也越来越强大,从国内外互联网公司来看Redis几乎是
标配了。作为开发人员在日常笔试面试和工作中遇到Redis相关问题的概率非常大,掌握Redis的相关知识点都十分有必要。

学习和梳理一个复杂的东西肯定不能胡子眉毛一把抓
,每个人都有自己的认知思路,笔者认为要从充分掌握Redis需要
从底向上、从外到内
去理解Redis。

Redis的实战知识点可以简单分为
三个层次:

  • 底层实现
    :主要是从Redis的源码中提炼的问题,包括但不限于底层数据结构、服务模型、算法设计等。

  • 基础架构
    :可用概况为Redis整体对外的功能点和表现,包括但不限于单机版主从架构实现、主从数据同步、哨兵机制、集群实现、分布式一致性、故障迁移等。

  • 实际应用
    :实战中Redis可用帮你做什么,包括但不限于单机缓存、分布式缓存、分布式锁、一些应用。


深入理解和熟练使用Redis需要时间锤炼,要做到信手拈来着实不易,想在短时间内突破只能从热点题目入手,虽然这样感觉有些功利,不过也算无可厚非吧,
为了吃饭我们还是倾向于原谅懒惰的自己,要不然吃土喝风?

4.底层实现热点题目

底层实现篇的题目主要是与Redis的源码和设计相关,可以说是Redis功能的基石,了解底层实现可以让我们更好地掌

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值