Redis 的数据类型、线程模型和持久化机制

Redis 的数据类型

String(字符串)

最基本的数据类型,可用存储文本、数字、二进制数据。

Hash(哈希表)

存储键和值的映射,适合存储对象(如用户信息)。

List

一个有序可重复的字符串序列,底层是双端链表。

Set

无序且不重复的字符串集合。

Sorted Set

每个元素带有一个分数(score),集合会按照 score 排序。

BitMap(位图)

基于 String 的位操作,适合存储二进制状态(0/1)。

HyperLogLog

一种基数统计算法结构,用于估算去重数据量,误差在 0.81% 左右。

Geo(地理位置)

存储地理坐标,并提高基于经纬度的计算。

Stream(流)

高级消息队列,支持消费组、消息持久化。

Redis 的线程模型

Redis 采用 单线程 + I/O 多路复用的模型来处理客户端请求。

1. 单线程执行命令

Redis 的核心逻辑(命令解析、数据读写)是单线程的。避免了多线程带来的上下文切换和锁竞争。这样 Redis 内部的数据结构可以不用加锁,保证了极高的执行效率。

2. I/O 多路复用

Redis 使用操作系统提供的 I/O 多路复用机制,可以同时监听多个客户端的 socket 连接。当某个 socket 可读/可写时,操作系统会通知 Redis,Redis 再去处理对应的请求。这使得单线程也能同时处理成千上万个连接。

Redis 的持久化机制

持久化机制可以保证数据不会因为宕机而完全丢失,主要有两种核心方式。

1. RDB(Redis Database File)

机制:在某个时刻把内存数据的快照保存到磁盘上(类似全量备份)。

优点:文件小,恢复速度快,适合用于冷备份。

缺点:宕机时可能丢失最后一次快照之后的数据(不实时)。

2. AOF (Append Only File)

机制:把每一个写命令追加到日志文件中(类似增量日志)。

优点:具有更高的数据安全性;日志格式是文本,可读性强,出错时可修复。

缺点:文件比 RDB 大,恢复速度比 RDB 慢。

3. 混合持久化

机制:在重写 AOF 时,先把内存快照(RDB方式)写入 AOF 文件开头,后续再追加命令日志。

优点:结合了 RDB 恢复快和 AOF 更安全的优点,启动时先加载 RDB,再加载少量 AOF 日志。

缺点:文件结构更复杂,不如单独的 RDB 或 AOF 简单。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值