写点什么

《Redis 核心技术与实战》学习笔记 01

用户头像
escray
关注
发布于: 2021 年 03 月 16 日
《Redis核心技术与实战》学习笔记 01

这是我在学习极客时间《Redis 核心技术与实战》专栏过程中的一些学习笔记,部分已经作为留言发布,但是留言太多,排在后面的一般很难被大家看到,所以集中发布在这里,欢迎讨论

00 开篇词 | 这样学 Redis,才能技高一筹


之所以开始学习这个“囤”了很久的专栏,是因为阿里云有一个“七天玩转 Redis 实战营”,第一讲也是蒋德钧老师的 Redis 概要介绍《走进 Redis》。


刚好看到精选留言已经有 99 条了,那么我来凑个整数。


看到开篇词中的两幅图,“两大维度、三大主线”和“Redis 问题画像图”,感觉已经值回票价了,如果学完专栏能够把这两幅图给别人讲清楚,那就 Redis 没什么问题了。


图片来自极客时间《Redis 核心技术与实战》专栏的开篇词


如果对面的那个人正好是面试官,那么谈笑风生是肯定的。


在置顶的留言里面,郭主编说这个专栏打磨了两年,从开篇词来看的确如此;编辑同学的配图让我想起了隔壁的《视觉笔记入门》。


给自己树一面小旗,趁着“实战营”的春风七日,本周内完成基础篇的学习。

01 | 基本架构:一个键值数据库包含什么?


在看专栏文章之前,问自己一个键值数据库包含什么?能想到的首先是哈希表,这个大概算是数据结构,可能还包括其所能够支持的数据类型。按照昨天的图,可能还得有缓存策略、网络接口、持久化方法(为了让数据不丢失)等等。


Redis 支持的 value 类型包括 String、哈希表、列表、集合

(Memcached 支持的 value 类型仅有 String)


键值数据库的基本操作 PUT/GET/DELETE/SCAN,对照普通数据库的增、查、删、查,好像没有修改操作。


基本的键值数据库包括访问框架框架、索引模块、操作模块和存储模块四部分。


  • 访问框架:动态库访问(本地)、网络访问框架(远程)

  • 操作模块:PUT/GET/SCAN/DELETE

  • 索引模块

  • 存储模块:分配器、持久化


似乎其他的系统也可以按照这四个方向去分析。


访问模式:网络框架访问,单线程、高性能


定位键值对位置:哈希表,键值数据保存在内存中


不同操作的具体逻辑


  • GET/SCAN:根据 key 的存储位置返回 value

  • PUT:分配内存空间

  • DELETE:删除键值对,释放内存空间


重启后快速提供服务:持久化


  1. 存哪些数据

  2. 对数据做什么操作

  3. 访问模式

  4. 定位

  5. 操作的底层逻辑 GET/SCAN/PUT/DELETE

  6. 持久化


前两个是从应用视角,后面四个是内部构造。


有一点好奇,专栏没怎么介绍 Redis 的历史或者是起源,Redis 为什么会出现,最初的应用场景是什么?


贴一段维基上的介绍:


The name Redis means REmote DIctionary Server. The Redis project began when Salvatore Sanfilippo, nicknamed antirez, the original developer of Redis, was trying to improve the scalability of his Italian startup, developing a real-time web log analyzer. After encountering significant problems in scaling some types of workloads using traditional database systems, Sanfilippo began to prototype a first proof of concept version of Redis in Tcl. Later Sanfilippo translated that prototype to the C language and implemented the first data type, the list. After a few weeks of using the project internally with success, Sanfilippo decided to open source it, announcing the project on Hacker News. The project began to get traction, more so among the Ruby community, with GitHub and Instagram being among the first companies adopting it.


Sanfilippo was hired by VMware in March, 2010.


In May, 2013, Redis was sponsored by Pivotal Software (a VMware spin-off).


In June 2015, development became sponsored by Redis Labs.


In October 2018 Redis 5.0 was released, introducing Redis Stream - a new data structure that allows storage of multiple fields and string values with an automatic, time-based sequence at a single key.


In June 2020 Salvatore Sanfilippo stepped down as Redis maintainer.


不知道是不是还有人和我一样已经忘记 Redis 的全名是:Remote Dictionary Server。



发布于: 2021 年 03 月 16 日阅读数: 23
用户头像

escray

关注

Let's Go 2017.11.19 加入

在学 Elasticsearch 的项目经理

评论

发布
暂无评论
《Redis核心技术与实战》学习笔记 01