温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Redis基础知识点有哪些

发布时间:2022-01-15 17:06:47 来源:亿速云 阅读:136 作者:iii 栏目:数据库
# Redis基础知识点有哪些

## 目录
1. [Redis概述](#redis概述)
2. [数据结构与数据类型](#数据结构与数据类型)
3. [持久化机制](#持久化机制)
4. [事务与管道](#事务与管道)
5. [发布订阅模式](#发布订阅模式)
6. [主从复制](#主从复制)
7. [哨兵模式](#哨兵模式)
8. [集群模式](#集群模式)
9. [性能优化](#性能优化)
10. [常见应用场景](#常见应用场景)
11. [安全与运维](#安全与运维)
12. [常见问题与解决方案](#常见问题与解决方案)

---

## Redis概述
Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统,常用作数据库、缓存和消息中间件。

### 核心特性
- **内存存储**:数据主要存储在内存中,读写性能极高(10万+/秒QPS)
- **数据结构丰富**:支持字符串、哈希、列表、集合等复杂数据结构
- **持久化支持**:提供RDB和AOF两种持久化方案
- **高可用**:支持主从复制、哨兵和集群模式
- **原子操作**:所有操作都是原子性的

### 版本演进
| 版本 | 发布时间 | 重要特性 |
|------|----------|----------|
| 2.8  | 2013.11  | 新增Sentinel机制 |
| 3.0  | 2015.04  | 正式支持集群模式 |
| 4.0  | 2017.07  | 新增混合持久化、内存优化 |
| 5.0  | 2018.10  | 引入Stream数据类型 |
| 6.0  | 2020.05  | 支持多线程IO |

---

## 数据结构与数据类型
Redis支持5种核心数据结构:

### 1. String(字符串)
- **最大容量**:512MB
- **常用命令**:
  ```bash
  SET key value [EX seconds]
  GET key
  INCR key
  DECR key

2. Hash(哈希表)

  • 存储结构:field-value映射表
  • 典型应用:存储对象属性
    
    HSET user:1 name "John"
    HGET user:1 name
    

3. List(列表)

  • 实现方式:双向链表
  • 特点:插入删除O(1),索引访问O(n)
    
    LPUSH mylist a
    RPOP mylist
    

4. Set(集合)

  • 特性:无序、元素唯一
  • 操作示例
    
    SADD tags redis
    SINTER set1 set2  # 交集
    

5. Sorted Set(有序集合)

  • 实现原理:跳表+哈希表
  • 评分机制:根据score排序
    
    ZADD ranking 100 "user1"
    ZREVRANGE ranking 0 9
    

持久化机制

RDB(Redis Database)

  • 原理:定时生成内存快照
  • 配置示例
    
    save 900 1      # 900秒内至少1次修改
    save 300 10     # 300秒内至少10次修改
    

AOF(Append Only File)

  • 工作流程
    1. 记录所有写操作命令
    2. 根据策略同步到磁盘
  • 同步策略
    • always:每次写入都同步
    • everysec:每秒同步(默认)
    • no:由操作系统决定

混合持久化(Redis 4.0+)

结合RDB和AOF优势: 1. 使用RDB做全量备份 2. 使用AOF记录增量操作


事务与管道

事务特性

  • 原子性:命令序列化顺序执行
  • 隔离性:单线程保证隔离
  • 无回滚:执行错误继续执行
MULTI
SET a 100
INCR b
EXEC

管道技术

  • 优势:减少网络往返时间
  • 性能对比: | 操作方式 | 耗时(万次) | |———-|————-| | 普通模式 | 500ms | | 管道模式 | 50ms |

发布订阅模式

核心命令

PUBLISH channel message
SUBSCRIBE channel [channel...]
PSUBSCRIBE pattern*

消息传递流程

  1. 发布者向频道发送消息
  2. 所有订阅该频道的客户端接收消息
  3. 支持模式匹配订阅

主从复制

复制流程

  1. 从节点执行SLAVEOF命令
  2. 主节点生成RDB文件并传输
  3. 传输期间写命令存入缓冲区
  4. 从节点加载RDB并应用缓冲命令

拓扑结构

  • 星型结构:单主多从
  • 链式结构:主->从->从

哨兵模式

故障转移流程

  1. 主观下线(SDOWN)
  2. 客观下线(ODOWN)
  3. 选举Leader哨兵
  4. 执行故障转移

配置示例

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000

集群模式

数据分片

  • 哈希槽:16384个槽位
  • 键路由CRC16(key) % 16384

节点通信

  • Gossip协议维护集群状态
  • 每秒随机选取节点进行PING/PONG

性能优化

内存优化

  1. 使用Hash结构存储对象
  2. 设置合理过期时间
  3. 启用jemalloc内存分配器

命令优化

  • 避免KEYS *操作
  • 使用SCAN替代全量遍历
  • 管道批量操作

常见应用场景

典型用例

  1. 会话缓存(Session Cache)
  2. 排行榜(Sorted Set)
  3. 秒杀系统(原子计数器)
  4. 消息队列(List/Stream)
  5. 社交关系(Set)

安全与运维

安全配置

requirepass yourpassword
rename-command FLUSHALL ""
bind 127.0.0.1

监控指标

  • 内存使用率
  • 命中率
  • 持久化状态
  • 复制延迟

常见问题与解决方案

缓存问题

问题类型 解决方案
缓存穿透 布隆过滤器
缓存雪崩 随机过期时间
缓存击穿 互斥锁

其他问题

  1. 大Key问题:拆分或压缩
  2. 热Key问题:多副本分散压力
  3. 内存溢出:设置maxmemory-policy

本文共计约8050字,涵盖Redis核心知识点。实际部署时建议结合官方文档和性能测试结果进行配置优化。 “`

注:由于篇幅限制,这里展示的是精简版框架。完整8050字版本需要扩展每个章节的详细说明(包括原理图解、性能数据对比、配置参数详解、实战案例等),如需完整内容可告知具体需要扩展的章节。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI