一.Redis是什么
redis是基于内存 ,持久化 的键值型 ,非关系型 数据库
二.Redis的特性
1.高性能内存读写
数据主要存储在内存中,内存读写速度远高于磁盘,具备超高并发处理能力。
2.完善的持久化机制
为了解决内存断电,进程退出导致内存数据丢失,redis提供了两种持久化方案
1.RDB:以快照的形式定期将全量数据写入到磁盘
2.AOF:记录下每一条执行的命令,数据丢失的风险更低
3.多样化的数据结构支持
这里指的多样化的数据结构支持,指的是key-value中的value,不是key(key的数据结构是String),value支持String,Hash,List,Set,Sorted Set等数据结构
4.灵活的内存管理策略
支持为 Key 设置过期时间,到期自动删除;同时提供多种内存淘汰策略,内存达到上限时自动清理冷数据。
5.支持主从复制
采用一主多从架构,主节点负责处理写请求,从节点实时同步主节点数据、承接读请求。既实现数据热备份,也能通过读写分离提升整体吞吐量。
6.内置丰富的附加功能
支持事务,Lua脚本,发布订阅等能力,可实现批量操作,自定义业务逻辑与简易消息,扩展性强
三.Redis快的原因(与mysql相比)
1.redis直接从内存中读数据,而mysql从硬盘中读数据
2.redis的核心功能逻辑简单,直接对内存中的数据进行简单操作,而mysql业务逻辑复杂
3.从网络的角度,redis使用了IO多路复用的方式
4.redis采用单线程模型,避免了多线程的竞争的开销
四.Redis采用单线程的原因以及弊端
原因: redis的核心业务逻辑都是短平快的,不会消耗太多的cpu资源,用单线程就能解决,没有必要引入多线程(引入多线程会带来线程之间竞争的开销)
补充说明:Redis 6.0 及以上版本引入多线程处理网络 IO,但命令执行依旧保持单线程,核心设计思想未改变。
弊端: 所有命令串行执行,一旦执行耗时较长的命令,会阻塞后续所有请求,引发服务卡顿,因此业务中需严格避免大键、慢命令。
五.使用场景
- 作为数据库
Redis 支持 RDB/AOF 持久化,可替代传统数据库存储体量小、读写极频繁的数据:
- 场景:用户临时状态、配置信息、积分、排行榜、计数数据
- 优势:读写性能远高于关系型数据库,架构简单。
- 作为缓存(最主流用法)
- 核心作用:缓存热点数据,拦截大部分查询请求,减轻 MySQL 压力,提升接口响应速度。
- 常见细分场景:
- 全量缓存:商品详情、首页 banner、基础字典数据
- 会话缓存:登录 token、用户会话信息
- 计算结果缓存:接口返回数据、复杂统计结果
- 衍生能力:分布式锁、接口限流、布隆过滤器防穿透
- 作为消息队列
利用 List 数据结构实现简易消息队列,满足轻量级异步需求:
- 核心作用:业务解耦、流量削峰、异步处理非核心流程
- 场景:日志上报、简单任务分发、异步通知、订单后续附属操作
- 补充:仅适用于低要求、轻量级场景;高可靠、高吞吐场景建议使用专业 MQ(RabbitMQ/RocketMQ)。