本篇重点:通过SimpleKV了解KV数据库的基本架构

Redis: 键值DB

从SimpleKV入手学习Redis

SimpleKVRedis
数据模型key:value组成的KV键值对key-type: Stringvalue-type: 基本数据类型(int、double等)KV键值对value-type: String、哈希表、列表、集合等
操作接口PUT/GET/SCAN/DELETE..
KV存储位置内存内存
基本组件访问框架、索引模块、操作模块、存储模块..
访问模式函数库调用(dll)、网络框架(Socket)(RocksDB用函数库调用,Memcached、Redis用网络框架)网络框架——“单线程、高性能”
索引模块哈希表、B+树、字典等(Memcached、Redis用哈希表,RocksDB用跳表)哈希表
持久化功能文件形式存储内存中的KVAOF、RDB

Q-A:

  1. KV保存在内/外存 的区别?

    内存 :优点——读写快,缺点——掉电数据丢失
    外存 :优点——避免数据丢失,缺点:慢,速度受限于磁盘
  2. 如何根据不同场景选择KV的存储位置?

    缓存 场景:要求快速访问但允许数据偶有丢失——内存

    Memcached/Redis都是内存键值DB

  3. 两种访问模式——函数库调用/网络框架 中,网络框架需要考虑的问题?

    a. 网络连接的处理(连接/断开/重连)

    b. 网络请求的解析(接口)

    c. 数据存取的处理(单/多线程,多进程)——IO模型设计

  4. 索引模块:Redis采用哈希表作为索引的原因?

    内存的高性能随机访问特性 可以很好匹配哈希表O(1)的操作复杂度
  5. 操作的逻辑步骤

    GET/SCAN: 根据Key返回value值
    PUT/DELETE: a. 新写入/删除KV
          b. 分配/释放内存

来源# 01 键值数据库的基本架构

最后修改:2021 年 08 月 02 日
如果觉得我的文章对你有用,请随意赞赏