欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Redis基础篇-01键值数据库基础架构

程序员文章站 2022-06-24 22:42:21
Redis基础篇-01键值数据库基础架构01 | 导读1、更好的学习方式1)先建立起“系统观”,也就是说,如果我们想要深入理解和优化 Redis,就必须要对它的总体架构和关键模块有一个全局的认知,然后再深入到具体的技术点2、专栏讲解方式1)通过剖析一个最简单 SimpleKV 键值数据库,来迅速抓住学习和调优 Redis 的关键02 | 构造 SimpleKV 键值数据库1、SimpleKV 的基本内部架构1)大体来说,一个键值数据库包括了访问框架、索引模块、操作模块和存储模块四...

Redis基础篇-01键值数据库基础架构

01 | 导读

1、更好的学习方式

1)先建立起“系统观”,也就是说,如果我们想要深入理解和优化 Redis,就必须要对它的总体架构和关键模块有一个全局的认知,然后再深入到具体的技术点

2、专栏讲解方式

1)通过剖析一个最简单 SimpleKV 键值数据库,来迅速抓住学习和调优 Redis 的关键

02 | 构造 SimpleKV 键值数据库

1、SimpleKV 的基本内部架构

1)大体来说,一个键值数据库包括了访问框架、索引模块、操作模块和存储模块四部分

2、可以对数据做什么操作

1)SimpleKV 支持基本操作增删改查,即 PUT、GET 和 DELETE
2)键值对保存在内存还是外存,以及它们的优劣

3、可以存哪些数据

1)对于键值数据库而言,基本的数据模型是 key-value 模型
2)“不同键值数据库支持的 key 类型一般差异不大,而 value 类型则有较大差别。例如,Memcached 支持的 value 类型仅为 String 类型,而 Redis 支持的 value 类型包括了 String、哈希表、列表、集合等
3)不同 value 类型的实现,不仅可以支撑不同业务的数据需求

4、采用什么访问模式

1)访问模式通常有两种:一种是通过函数库调用的方式供外部应用使用,另一种是通过网络框架以 Socket 通信的形式对外提供键值对操作
2)实际的键值数据库也基本采用上述两种方式,例如,RocksDB 以动态链接库的形式使用,而 Memcached 和 Redis 则是通过网络框架访问

5、如何定位键值对的位置

1)当 SimpleKV 解析了客户端发来的请求,知道了要进行的键值对操作,此时,SimpleKV 需要查找所要操作的键值对是否存在,这依赖于键值数据库的索引模块
2)索引的作用是让键值数据库根据 key 找到相应 value 的存储位置,进而执行操作
3)不同键值数据库采用的索引并不相同,例如,Memcached 和 Redis 采用哈希表作为 key-value 索引,而 RocksDB 则采用跳表作为内存中 key-value 的索引
4)对于 Redis 而言,通过索引找到 key对应的value后,仍然需要从 value 的复杂结构(例如集合和列表)中进一步找到我们实际需要的数据,这个操作的效率本身就依赖于它们的实现结构

6、不同操作的具体逻辑是怎样的

1)GET/SCAN:根据 value 的存储位置返回 value 值
2)PUT:新建或修改,为新建键值对分配内存空间
3)“DELETE:删除,释放相应的内存空间

7、如何实现重启后快速提供服务

1)SimpleKV 只需要考虑何时将内存中的键值数据保存到文件中,有两种方式。
2)一种方式是,对于每一个键值对,SimpleKV 都对其进行落盘保存, 该方式更加可靠,但是,因为每次都要写盘,SimpleKV 的性能会受到很大影响,
3)另一种方式是,SimpleKV 只是周期性地把内存中的键值数据保存到文件中,这样可以避免频繁写盘操作的性能影响。但是有数据丢失的风险。

03 | 小结

1、构造简单键值数据库 SimpleKV

1)前面两步我们是从应用的角度进行设计的,也就是应用视角
2)后面四步其实就是 SimpleKV 完整的内部构造

2、从 SimpleKV 到 Redis 的演进
Redis基础篇-01键值数据库基础架构

1)从 SimpleKV 到 Redis 的演进 图
2)Redis 主要通过网络框架进行访问,而不再是动态库了
3)Redis 数据模型中的 value 类型很丰富,因此也带来了更多的操作接口
4)Redis 的持久化模块能支持两种方式:日志(AOF)和快照(RDB),它们各有优劣
5)SimpleKV 是个简单的单机键值数据库,但是,Redis 支持高可靠集群和高可扩展集群,因此,Redis 中包含了相应的集群功能支撑模块

04 | 思维导图

1、键值数据库基础架构
Redis基础篇-01键值数据库基础架构

参考文献:

[1] 蒋德钧. Redis核心技术与实战[M]. 极客时间, 2020.
[2] 图片取自《Redis核心技术与实战》专栏

本文地址:https://blog.csdn.net/z_z_z_666666/article/details/108875447