美文网首页
《01 | 基本架构:一个键值数据库包含什么?》笔记

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

作者: 念善 | 来源:发表于2024-09-22 22:32 被阅读0次

简介

基础篇强调构建系统观,重在让读者对 Redis 的总体架构和关键模块有一个全局的认知,然后再深入到具体的技术。本章是基础篇的第一篇。第一篇从 SimpleKV 这个虚构的 kv 数据库开始讲解,通过逐步推演构造 SimpleKV 来构建知识框架。

关键问题

  1. 掌握数据模型和操作接口
    前者突出可以存什么数据,后者突出可以对数据作什么操作。

数据模型:key 往往大同小异,重点在于 value 类型支持。Memcached 仅支持 String. Redis 支持的 value 类型包括 String、哈希表、列表、集合等。Redis 受欢迎的一个重要原因就在于支持丰富的 value 类型。

数据操作,最基本的:

  • Put:插入/更新
  • Get:获取指定 key 对应的 value
  • Delete: 删除指定键值
  • Scan:根据指定 key 范围返回 value 列表
  1. 键值对保存在内存还是外村
    Memcache/ Redis 都是内存型。SimpleKV 也采用内存型。外存会更复杂。

  2. 采用什么访问模式

  • 函数库调用的方式供外部使用:比如动态链接库的方式
  • 通过网络框架以 socket 通信的方式访问
  1. 如何定位键值对的位置
    索引的作用是让键值数据库根据 key 找到相应 value 的存储位置,进而执行操作。索引类型有哈希表、B+ 树、字典树等,Memcache 和 Redis 均采用哈希表,SimpleKV 也如此。哈希表复杂度 O(1 ),内存的高性能随机访问特性和哈希表很匹配。

  2. 不同操作的具体逻辑是怎样的

  • Get/Scan:根据索引找到 value 存储位置,返回 value 值即可。
  • Put: 为一个新的键值对分配内存空间,并进行设置
  • Delete:删除键值对,并释放相应的空间,这个过程由分配器完成。
  1. 如何实现重启后快速提供服务?

「SimpleKV 采用了常用的内存分配器 glibc 的 malloc 和 free,因此,SimpleKV 并不需要特别考虑内存空间的管理问题。但是,键值数据库的键值对通常大小不一,glibc 的分配器在处理随机的大小内存块分配时,表现并不好。一旦保存的键值对数据规模过大,就可能会造成较严重的内存碎片问题。」

分配器是内存数据库的一个关键因素。Redis 的内存分配器提供了多种选择。为重启后快速提供服务,KV 数据库也要有持久化功能。SimpleKV 采用文件存储方式。

实现上,有两种方式:

  • 每次操作都要罗盘,数据可靠性高,但频繁写盘性能差
  • 周期性的写文件罗盘,性能高,但可能丢数据

KV 数据库的基本结构

image.png

通过 SimpleKV 这么一个麻雀虽小五脏俱全的数据库,学习内存 KV 的基本组件,便于进一步学习 Redis.


image.png

SimpleKV 和 Redis 的几个关键差异:

  • Redis 通过网络框架访问,而不是动态库
  • Redis 提供更加丰富的数据类型
  • Redis 提供更完善的持久化能力,包含日志 AOF、快照 RDB 两种方式。
  • Redis 提供集群能力,支持高可靠、高可扩展集群能力

相关文章

  • Redis核心技术(问题解答篇)

    01-基本架构:一个键值数据库(Redis)包含什么? Redis能够在实际业务场景中得到广泛的应用,就是得益于支...

  • 10 RDB持久化

    Redis是一个键值对数据库服务器,服务器中通常包含着任意个非空数据库,而每个非空数据库中有可以包含任意个键值对,...

  • Redis--(redis部署、基础命令及五种数据结构)

    01,Redis介绍 1,简介 Redis是一种基于键值对的NoSQL数据库,与很多键值对数据库不同,redis中...

  • 架构师必备技能:微服务架构

    什么是软件架构? 软件架构是一个包含各种组织的系统组织,这些组件包括 Web服务器, 应用服务器, 数据库,存储,...

  • 架构师必备技能:微服务架构

    什么是软件架构? 软件架构是一个包含各种组织的系统组织,这些组件包括 Web服务器, 应用服务器, 数据库,存储,...

  • nosql - Redis简介

    实时架构和离线架构 -Redis 基于内存的键值型的NoSql数据库 HBase 分布式的面向列存储的NoSql数...

  • redis 入门笔记

    redis 入门笔记 redis中文文档 [TOC] string (字符串) redis 是一个键值对的数据库,...

  • 分布式数据库排序及优化

    一、背景 1.1 分布式数据库架构 当前分布式数据库架构有不少,但是总体架构相差不大,主要组件都包含协调节点、数据...

  • 分布式数据库排序及优化

    一、背景 1.1 分布式数据库架构 当前分布式数据库架构有不少,但是总体架构相差不大,主要组件都包含协调节点、数据...

  • android保存 数据

    主要 3类 : (不包含保存在 网络服务器) SharedPreferences 键值对 数据库 文件 Sha...

网友评论

      本文标题:《01 | 基本架构:一个键值数据库包含什么?》笔记

      本文链接:https://www.haomeiwen.com/subject/ngexrjtx.html