01 基本框架:一个键值数据库包含什么
前言:对蒋德钧老师的《Redis 核心技术与实战》课程的学习记录。
构造简单的键值数据库 SimpleKV
考虑里面可以存什么样的数据,对数据可以做什么样的操作,也就是数据模型和操作接口。
对于键值数据库而言,基本的数据模型是 key-value 模型。
Redis 能够在实际业务场景中得到广泛的应用,就是得益于支持多样化类型的 value。
PUT/GET/DELETE/SCAN 是一个键值数据库的基本操作集合。
键值对保存在内存,读写很快。潜在的风险是一旦掉电,所有的数据都会丢失。
键值对保存在外存,可以避免数据丢失,但是受限于磁盘的慢速读写,键值数据库的整体性能会被拉低。
SimpleKV 的基本组件
大体来说,一个键值数据库包括了访问框架、索引模块、操作模块和存储模块四部分。
索引的作用是让键值数据库根据 key 找到相应 value 的存储位置,进而执行操作。 Redis 采用哈希表作为 key-value 索引。
内存键值数据库(例如 Redis)采用哈希表作为索引,很大一部分原因在于,其键值数据基本都是保存在内存中的,而内存的高性能随机访问特性可以很好地与哈希表 O(1) 的操作复杂度相匹配。
从 SimpleKV 演进到 Redis的几点变化:
- Redis 主要通过网络框架进行访问,不再是动态库,使得 Redis 作为一个基础性的网络服务进行访问,扩大了 Redis 的应用范围。
- Redis 数据模型中的 value 类型很丰富,因此也带来了更多的操作接口。
- Redis 的持久化模块能支持两种方式:日志(AOF)和快照(RDB)。
- SimpleKV 是个简单的单机键值数据库,Redis 支持高可靠集群和高可扩展集群。