DukeDuke
主页
文档转换
关于我们
主页
文档转换
关于我们
  • Redis

    • Redis简介
    • Redis(单机)安装
    • Redis配置
    • Redis数据结构
    • RDB、AOF 和混合持久化机制
    • Redis内存管理
    • Redis缓存一致性
    • Redis缓存穿透
    • Redis缓存击穿
    • Redis缓存雪崩
    • Redis Lua脚本
    • Redis主从复制
    • Redis哨兵模式
    • Redis集群
    • Redis数据分片
    • Redis CPU使用率过高
    • Redis面试题
  • MySQL

    • MySQL简介
    • MySQL安装
    • MySQL配置
    • MYSQL日常维护
    • MYSQL优化-慢查询
    • MYSQL优化-索引
    • MYSQL数据库设计规范

Redis 详细介绍

1. Redis 是什么?

Redis(Remote Dictionary Server)是一个开源的、基于内存的键值对(Key-Value)数据库。它支持多种数据结构,可以用作:

  • 数据库
  • 缓存
  • 消息中间件
  • 队列

Redis 是完全开源免费的,使用 C 语言编写,遵守 BSD 协议,是一个高性能的 key-value 数据库。

2. Redis 的特点和功能

2.1 数据结构丰富

  • String(字符串)
  • Hash(哈希)
  • List(列表)
  • Set(集合)
  • Sorted Set(有序集合)
  • Bitmap(位图)
  • HyperLogLog(基数统计)
  • GEO(地理信息定位)

2.2 功能特性

  • 支持数据持久化
  • 支持主从复制
  • 支持事务
  • 支持 Lua 脚本
  • 支持发布/订阅模式
  • 支持键过期策略
  • 支持多种客户端语言

3. Redis 为什么能这么快?

Redis 的速度可以达到 10 万+ 的 QPS(每秒查询次数) 但它却进程却是单线程模型,因为 redis 完全是基于内存操作,CPU 不是 redis 的瓶颈,redis 最大的瓶颈可能是机器的内存和网络的带宽;

  1. 基于内存操作

    • 数据存储在内存中,读写速度快
    • 避免了磁盘 I/O 的开销
  2. 单线程模型

    • 避免了多线程的上下文切换和竞争条件
    • 不需要考虑各种锁的问题
    • 单线程处理命令,保证了原子性
  3. 高效的数据结构

    • 使用哈希表作为底层实现
    • 优化的数据结构设计
    • 合理的内存分配策略
  4. I/O 多路复用

    • 使用 epoll 作为 I/O 多路复用技术的实现
    • 非阻塞 I/O
    • 单线程处理多个客户端连接

4. Redis 持久化

为什么需要持久化

比如 redis 里有 10gb 数据,突然停电或者意外宕机了,再启动的时候 10gb 都没了!所以需要持久化,宕机后再通过持久化文件将数据恢复。

4.1 RDB 快照(Redis Database)

  • 按照指定的时间间隔对数据进行快照存储
  • 优点:
    • 文件紧凑,适合备份
    • 恢复速度快
    • 适合大规模数据恢复
  • 缺点:
    • 可能丢失最后一次快照后的数据
    • 不适合频繁写入场景

4.2 AOF 文件(Append Only File)

  • 记录所有写操作命令
  • 优点:
    • 数据安全性高
    • 可读性好
  • 缺点:
    • 文件体积大
    • 恢复速度慢

5. Redis 缓存的淘汰策略

策略说明适用场景
noeviction不淘汰,内存不足时报错对数据一致性要求高的场景
allkeys-lru所有键中最近最少使用的淘汰热点数据访问场景
volatile-lru设置了过期时间的键中最近最少使用的淘汰需要过期时间的场景
allkeys-random所有键中随机淘汰数据访问均匀的场景
volatile-random设置了过期时间的键中随机淘汰需要过期时间的随机淘汰场景
volatile-ttl设置了过期时间的键中即将过期的淘汰优先淘汰即将过期的数据

6. Redis 集群模式选择

提示

redis 集群有三种模式 1.主从复制 2.哨兵模式 3.Cluster 集群模式

  • 主从复制:选取有三台(奇数)服务器,一主两从,主节点负责写入,从节点负责读取,达到读写分离,此时三台集群上的数据一致,但是有个不好的点在于 当主节点挂了的话,就需要人为操作,来重启主节点。

  • 哨兵模式:哨兵模式在原有主从复制的基础上加了哨兵机制,简单理解就是监测各个节点活性,假如主节点挂了,还可以自动重启主节点。

  • Cluster 集群模式:将数据均分到所有主节点上。与主从复制不同,集群中的节点不存储全量数据,而是分片存储。这种方式适合数据量较大的场景,可以均摊服务器压力

最近更新:: 2026/4/17 13:21
Contributors: Duke
Next
Redis(单机)安装