首页>软件资讯>常见问题

常见问题

Redis是什么

发布时间:2025-11-16 22:24:59人气:1

Redis是什么

Redis (Remote Dictionary Server四,远程字典服务)是一个开源的、基于内存的、支持持久化Q的键值对(Key-Value)存储系统。它通常被归类为 NoSQL 数据库、缓存和消息中间件。基于内存囚 是其高性能的主要原因,数据主要存储在内存中,读写速度极快。 键值对Q 是其基本数据模型,但 Value 支持多种复杂数据结构,这使其远超简单的键值存储。

核心特点

1.极致性能

数据操作主要在内存中完成,配合高效的底层数据结构(如跳跃表、哈希表)和单线程架构(避免上下文切换和竞争条件),使其能达到每秒数十万次的读写性能。

2丰富的数据结构

不仅是简单的字符串(Sting),还支持列表(List)、集合(Set)、有序集合(Sorted Set)、哈希(Hash)、位图(Bitmap)等。这使得开发者可以直接在数据库层完成复杂逻辑,减少应用代码的复杂性。

3. 功能完备

。持久化:支持 RDB(快照)和 AOF(日志)两种方式将内存数据保存到磁盘,防止数据丢失。

。高可用与复制:通过 Redis Sentinel(哨兵)实现自动故障转移,保证服务高可用;通过主从复制实现数据备份和读写分离,。

。事务:支持简单的事务操作,保证一系列命令的原子性执行。

。发布/订阅(Pub/Sub):提供消息发布订阅功能,可用于简单的消息队列场景。

。Lua 脚本:支持执行 Lua 脚本,实现复杂的原子操作。4、单线程与原子性

Redis 的核心网络请求处理模块是单线程的,任何命令操作都是原子性的,无需担心并发问题,简化了开发。

2. Redis 的单线程架构

Redis 的核心业务,对数据的操作始终是单线程的。但在 6.0之后,也使用了额外的线程来处理网络 10。

Redis 在处理网络时利用 1/0 多路复用机制。该机制允许一个线程同时监视多个网络请求,当某 socket 变得可读或可写时,才通知主线程处理。

前提是,该业务场景并不涉及非常频繁的交互,如直播、竞技游戏等。当同一时刻,大部分 socket都是静默的,没有数据传输,I0多路复用就显得非常高效了。Redis 的主线程就是通过这个机制管理数十万的网络连接。

工作流程具体为:

Redis 的主线程使用 epol 这组 /O 多路复用的 API,监听所有连接

当连接真正可读时,主线程将读写网络数据的任务交由10 线程并行处理。

10 线程读完数据后,主线程串行执行全部读取到的命令。

执行完毕,主线程将响应交由 10 线程写入。

所有的网络操作(acceptread、write、close)都不再是传统的阻塞式调用,而是被转换为对事件的监听和回调。主线程只在事件确实发生时(数据就绪)才进行实际操作,避免了在空的网络 I/0 上无谓地等待和阻塞。

因此再来总结 Redis 快的原因

1.纯内存访问。这是 Redis 快的基础。

2.非阻塞 1O.

3.单线程避免线程竞争开销,也无需考虑线程安全问题,Redis 的核心业务基本都是对内存数据的简单操作,不会特别消耗 CPU单线程足以应对。

4.Redis 并没有关系型数据库那样复杂的功能支持。比如关系型数据库中的各种约束。

单线程固然为 Redis 带来许多优势,但缺点也很明显。一旦某个命令执行过长,会导致其他全部命令处于等待,造成客户端的阻这对于 Redis 这种提供高性能服务的中间件是非常致命的。因此说,Redis 是面向快速执行场景的数据库。



上一条:Redis原理

下一条:没有了!