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

相关推荐
倔强的石头1061 小时前
KaiwuDB社区版 3.1.0 在 Ubuntu 22.04 部署实战:TLS 配置、踩坑复盘与轻量压测
数据库·ubuntu·kwdb
liwenzhuola1 小时前
解决 Ubuntu 上 Qt Creator 项目编译失败的问题
数据库·qt·ubuntu
万邦科技Lafite3 小时前
利用淘宝商品详情接口获取商品价格,监控商品价格浮动
数据库·api·开放api接口·淘宝开放接口
程序员阿伦3 小时前
璋㈤鏈虹殑Java澶у巶闈㈣瘯璁帮細浠嶴pring Boot鍒癒ubernetes锛�3杞湡棰樺叏瑙f瀽锛�
spring boot·redis·kubernetes·aigc·java闈㈣瘯·寰湇鍔�·鐢靛晢绉掓潃
深藏功yu名4 小时前
Day24:向量数据库 Chroma_FAISS 入门
数据库·人工智能·python·ai·agent·faiss·chroma
知识分享小能手4 小时前
MongoDB入门学习教程,从入门到精通,MongoDB创建、更新和删除文档(3)
数据库·学习·mongodb
chehaoman4 小时前
MySQL的索引
android·数据库·mysql
cm6543204 小时前
用Python破解简单的替换密码
jvm·数据库·python