Redis基础知识

## Redis概述

Redis(全称:Remote Dictionary Server 远程字典服务)是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map), 列表(list), 集合(sets)和有序集合(sorted sets)等类型。

### 1.1、NoSQL

NoSQL,泛指非关系型的数据库,是不同于传统的关系型数据库的数据库管理系统的统称。

NoSQL用于超大规模数据的存储,收集万亿比特的数据。这些类型的数据存储没有固定的形式,没有多余操作就可以横向扩展。

### 1.2、什么是Redis

Redis是NoSQL中的一种存储工具,他是一个key-value存储系统。默认有16个数据库从0到15来进行表示。Redis的存储类型:包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。在此基础上,Redis支持各种不同方式的排序。

Redis 被广泛应用在缓存方向,与传统数据库不同的是 Redis 的数据是存在内存中的,因此读写速度非常快。

Redis为分布式缓存,在多客户端的情况下,共用一份缓存数据,缓存具有一致性。

Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步,为了可靠性。

### 1.3、Redis特点

**性能极高** – Redis读的速度是11W次/s,写的速度是81K次/s

**支持数据的持久化**,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

**丰富的数据类型**,Redis不仅仅支持简单的key-value类型的数据,同时还提供Strings, Lists, Hashes, Sets 及 Ordered Sets 等数据结构的存储。

**支持数据的备份**,即master-slave模式的数据备份。

Redis 核心特点一览表

特性类别关键特点技术说明
存储方式内存存储所有数据存储在内存中,读写速度达微秒级
线程模型单线程执行 + 多线程I/O(6.0+)命令顺序执行保证原子性,6.0版本后网络I/O多线程处理
数据结构8种核心数据结构String/Hash/List/Set/ZSet/Bitmap/HyperLogLog/Geo/Stream
持久化双持久化方案RDB(快照备份) + AOF(操作日志)两种模式
高可用三级扩展方案主从复制 → 哨兵监控 → 集群分片的三级扩展体系
性能表现超高吞吐量单机可达10万+ QPS,延迟<1ms
适用场景高频读写场景缓存/会话管理/实时排行榜/计数器等热点数据
使用限制内存容量限制单实例通常管理10-100GB数据,需设置淘汰策略

关键特性详解:

  1. 内存存储:数据完全内存驻留,支持异步持久化到磁盘

  2. 单线程优势:避免锁竞争,O(1)时间复杂度命令保证高性能

  3. 数据结构:每种结构有专属命令,如ZSET的ZADD/ZRANGE

  4. 持久化组合:可单独或同时使用RDB和AOF,建议生产环境同时开启

  5. 集群方案:从单机→主从→哨兵→集群的渐进式扩展路径

  6. 典型场景:缓存击穿保护/分布式锁/延迟队列等解决方案

### 1.4、Redis优缺点

Redis 快、强、多功能,但贵、容量有限、查询弱,适合高速缓存 & 特定数据结构,不适合海量存储 & 复杂业务逻辑

类别优点缺点
性能⚡ 极快(内存操作,微秒级响应)
📊 高吞吐(单线程无锁,6.0+ 多线程 I/O)
🐌 慢查询会阻塞(如 KEYS *、大集合操作)
数据结构🧩 丰富(String、Hash、List、Set、Sorted Set、Stream 等)🔍 查询能力弱(无 SQL 复杂查询,只能 Key/结构操作)
持久化💾 支持 RDB(快照)和 AOF(日志)⏳ 持久化影响性能(RDB 快照可能阻塞,AOF 文件大)
扩展性🏗 集群模式支持横向扩展(Redis Cluster)🔗 跨节点操作受限(事务/Lua 要求 Key 同 slot)
成本-💰 内存昂贵(不适合海量数据存储)
一致性-🔄 缓存与数据库同步难(需额外策略保证一致性)
适用场景✅ 缓存、会话、排行榜、计数器、消息队列(轻量级)❌ 不适合:大数据存储、复杂事务、强关系查询

### 1.5、redis的雪崩和穿透

穿透 vs 雪崩对比

对比项缓存穿透缓存雪崩
触发原因查询不存在的数据大量缓存同时失效
影响范围特定不存在的数据所有失效缓存对应的数据
防御重点非法请求过滤失效时间分散
典型症状数据库收到不存在的key查询数据库收到大量正常key查询

(1)缓存穿透 (Cache Penetration)

定义

缓存穿透是指查询一个根本不存在的数据,导致请求直接落到数据库上,可能压垮数据库。

典型场景

  1. 恶意攻击:故意请求不存在的数据(如ID=-1或超大ID)

  2. 业务误操作:错误地查询不存在的键

解决方案

方案原理优缺点
布隆过滤器预存所有合法key的哈希值,快速判断key是否存在有误判率,需维护过滤器
空值缓存对不存在的key也缓存空值(设置较短TTL)可能缓存大量无用空值
参数校验在API层对请求参数做严格校验简单但无法防恶意攻击

(2)缓存雪崩 (Cache Avalanche)

定义

大量缓存同时失效缓存服务宕机,导致所有请求直接访问数据库,造成数据库压力激增甚至崩溃。

典型场景

  1. 同一时间大量key过期(如缓存预热时设置相同TTL)

  2. Redis集群宕机

  3. 热点数据突然失效

解决方案

方案原理实现要点
错峰过期给缓存过期时间添加随机值TTL = base_time + random_offset
多级缓存采用本地缓存+Redis的多层结构使用Caffeine/Ehcache作为一级缓存
熔断降级数据库压力过大时返回降级内容通过Hystrix/Sentinel实现
集群高可用保证Redis服务稳定性哨兵模式/Cluster模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值