从键值数据库到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结合使用,既保证了数据恢复速度,又保障了数据一致性,满足不同场景下的数据安全需求。

相关推荐
ffqws_6 小时前
Redis 分布式锁:基于 Redisson 的实现与面试高频问答
redis·分布式·面试
AI-好学者7 小时前
阶段一-图数据库基础与PropertyGraph模型
数据库·rag·knowledge graph·graphrag
其实防守也摸鱼9 小时前
运维--学习阶段问题解答(1)(自测)
linux·运维·服务器·数据库·学习·自动化·命令模式
懒鸟一枚9 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
龙仔7259 小时前
SQL Server 创建只读账号完整操作(分两种场景:SSMS图形界面 + T-SQL脚本)
数据库·sql·oracle
霁月的小屋9 小时前
生产环境中的事务实践——银行系统上线记(四)
数据库
Database_Cool_10 小时前
AI 应用数据底座首选:阿里云 PolarDB 为大模型 RAG 提供一体化支撑
数据库·阿里云
玖玥拾10 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
IvorySQL11 小时前
PG 日报|社区讨论重构 pg_hba 配置文件格式
数据库·人工智能·postgresql·重构·ivorysql
逝水无殇11 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#