从键值数据库到Redis

从键值数据库到Redis

一、键值数据库

键值数据库(Key-Value Database,简称KV数据库)是NoSQL(非关系型)数据库的重要分支。

以"键(Key)-值(Value)"对为核心存储单元,凭借简单的结构、极高的读写性能,成为高并发场景下的基础存储方案。

而Redis(Remote Dictionary Server)作为键值数据库的"集大成者",并非简单的KV存储,而是在传统键值数据库的基础上,优化了访问、索引、操作、存储四大核心模块,实现了从"单一存储"到"多功能数据处理平台"的跨越。

二、访问框架

访问框架是应用程序与数据库交互的"桥梁",核心作用是接收请求、解析指令、返回结果。

与SimpleKV采用动态库 访问不同,Redis主要通过网络框架 进行访问,这使其能够作为基础性的网络服务被广泛访问,极大地扩大了应用范围.

标准化通信协议:采用自定义的RESP(Redis Serialization Protocol)协议,兼具简单性与通用性,支持文本和二进制两种编码方式,既能快速解析基础指令,也能适配复杂命令的传输;

三、索引模块

索引是数据库快速定位数据的核心,键值数据库的索引本质是"键到值的映射"。

Redis以"哈希表索引 "为基础,针对传统键值索引的局限,进行了两大核心升级:优化哈希索引性能、引入多数据结构索引,实现了"键索引+值结构索引"的双重保障。

  • 优化哈希索引性能 :Redis采用"渐进式哈希 "机制,解决了传统哈希表扩容时的性能瓶颈。当哈希表需要扩容时,Redis不会一次性完成所有键的重新哈希,而是分多次、逐步将旧哈希表的键迁移到新哈希表中,在此过程中,读写操作可正常进行,不会出现卡顿;同时,Redis还优化了哈希冲突的处理方式,通过更高效的链表+跳表组合,减少冲突带来的查询损耗。
  • 引入多数据结构索引 :Redis Value支持字符串(String)、列表(List)、哈希(Hash)、集合(Set)、有序集合(Sorted Set)等多种数据结构,且为每种数据结构设计了专属的索引机制 ,实现了"键索引+结构内索引"的双重索引能力

四、操作模块

Redis,针对每种数据结构,Redis都提供了专属的操作指令,实现对数据的精细化控制:

  • 字符串:支持append(追加内容)、incr/decr(自增自减)、getset(设置并返回旧值)、bitop(位运算)等操作,可对字符串进行部分修改和数值运算;

  • 列表:支持lpush/rpush(头部/尾部插入)、lpop/rpop(头部/尾部删除)、lrange(范围查询)、ltrim(修剪列表)等操作,实现列表的灵活管理;

  • 哈希:支持hset/hget(设置/获取字段值)、hmset/hmget(批量设置/获取字段)、hdel(删除字段)、hkeys/hvals(获取所有字段/值)等操作,可单独操作哈希中的某个字段;

  • 集合:支持sadd/srem(添加/删除元素)、smembers(获取所有元素)、sinter/sunion(交集/并集)、sismember(判断元素是否存在)等操作,实现集合的去重与关联操作;

  • 有序集合:支持zadd(添加元素并设置分数)、zrange/zrevrange(按分数范围查询)、zincrby(分数自增)、zrank(获取元素排名)等操作,实现按分数排序和范围筛选。

五、存储模块

Redis的存储模块核心是"内存优先 ",将所有数据存储在内存中,实现毫秒级读写。同时通过两种持久化机制保障数据安全。

  • RDB (Redis Database):即快照模式 ,定时将内存中的数据快照(Snapshot)写入磁盘,生成RDB文件,宕机后可通过RDB文件快速恢复数据。RDB的优点是恢复速度快 ,占用磁盘空间小;缺点是可能会丢失两次快照之间的数据。
  • AOF (Append Only File):即日志模式 ,将所有写操作指令(如set、delete)追加到AOF文件 中,宕机后通过重新执行AOF文件中的指令,恢复数据。AOF的优点是数据一致性高 (可配置每秒刷盘或每次操作刷盘),丢失数据少;缺点是AOF文件体积大恢复速度比RDB慢

Redis还支持RDB与AOF结合使用,既保证了数据恢复速度,又保障了数据一致性,满足不同场景下的数据安全需求。

相关推荐
渣渣盟1 天前
Mysql入门到精通全集(SQL99)包含关系运算,软考数据库工程师复习首选
数据库·mysql·oracle
dishugj1 天前
HANA 数据库的核心进程架构
数据库
2301_782040451 天前
CSS Flex布局中如何实现导航栏与Logo的左右分布_利用justify-content- space-between
jvm·数据库·python
.柒宇.1 天前
Redis主从复制集群搭建详解
数据库·redis·缓存·主从复制
2301_808414381 天前
MySQL中的函数
数据库·mysql
Mahir081 天前
MySQL 数据一致性的基石:三大日志( redo log/undo log/binlog)与两阶段提交(Prepare 阶段和Commit 阶段)深度解密
数据库·后端·mysql·面试
x***r1511 天前
dbeaver-ce-24.1.3-x86_64-setup安装步骤详解(附DBeaver数据库管理与SQL编写教程)
数据库·sql
一只鹿鹿鹿1 天前
数据库运维与管理规范(WORD)
运维·数据库
IT策士1 天前
Python 中间件系列:redis 深入浅出
redis·python·中间件
小猿姐1 天前
GitLab on Kubernetes:使用 KubeBlocks 部署生产级高可用 PostgreSQL 和 Redis
redis·postgresql·kubernetes