Redis学习笔记(01|基本架构:一个键值数据库包含什么?))

参考:

https://time.geekbang.org/column/article/268262

系统观

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

重点:数据模型 和 操作接口

可以存哪些数据?(数据模型)

对于键值数据库而言,基本的数据模型是 key-value 模型。
key类型一般差异不大,value类型有较大差别
Redis支持的类型包括String、哈希表、列表、集合等。

可以对数据做什么操作?(操作接口)

PUT/GET/DELETE/SCAN 是一个键值数据库的基本操作集合
PUT:新写入或更新一个 key-value 对;(有些键值数据库的新写 / 更新操作叫 SET)
GET:根据一个 key 读取相应的 value 值;
DELETE:根据一个 key 删除整个 key-value 对。
SCAN:查询一个用户在一段时间内的访问记录,根据一段 key 的范围返回相应的 value 值。

键值对保存在内存还是外存?

如何进行设计选择,我们通常需要考虑键值数据库的主要应用场景
为了和 Redis 保持一致,我们的 SimpleKV 就采用内存保存键值数据。

SimpleKV基本组件

SimpleKV基本组件:一个键值数据库包括了访问框架、索引模块、操作模块和存储模块四部分
键值数据库基本组件

采用什么访问模式?(访问框架)

访问模式通常有两种:
一种是通过函数库调用的方式供外部应用使用,
另一种是通过网络框架以 Socket 通信的形式对外提供键值对操作

如何定位键值对的位置?(索引模块)

索引的作用是让键值数据库根据 key 找到相应 value 的存储位置,进而执行操作。
内存键值数据库(例如 Redis)采用哈希表作为索引

不同操作的具体逻辑是怎样的?(操作模块)

对于 GET/SCAN 操作而言,此时根据 value 的存储位置返回 value 值即可;
对于 PUT 一个新的键值对数据而言,SimpleKV 需要为该键值对分配内存空间;
对于 DELETE 操作,SimpleKV 需要删除键值对,并释放相应的内存空间,这个过程由分配器完成。

如何实现重启后快速提供服务?(存储模块)

SimpleKV 的存储模块中增加了持久化功能
鉴于磁盘管理要比内存管理复杂,SimpleKV 就直接采用了文件形式,将键值数据通过调用本地文件系统的操作接口保存在磁盘上。,SimpleKV 只需要考虑何时将内存中的键值数据保存到文件中,就可以了

小结

在这里插入图片描述

  • Redis 主要通过网络框架进行访问,而不再是动态库了,这也使得 Redis 可以作为一个基础性的网络服务进行访问,扩大了 Redis
    的应用范围。

  • Redis 数据模型中的 value 类型很丰富,因此也带来了更多的操作接口,例如面向列表的 LPUSH/LPOP,面向集合的 SADD/SREM 等。在下节课,我将和你聊聊这些 value 模型背后的数据结构和操作效率,以及它们对 Redis 性能的影响。

  • Redis 的持久化模块能支持两种方式:日志(AOF)和快照(RDB),这两种持久化方式具有不同的优劣势,影响到 Redis 的访问性能和可靠性。

  • SimpleKV 是个简单的单机键值数据库,但是,Redis 支持高可靠集群和高可扩展集群,因此,Redis 中包含了相应的集群功能支撑模块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值