浅谈Redis(1)

一.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,但命令执行依旧保持单线程,核心设计思想未改变。

弊端: 所有命令串行执行,一旦执行耗时较长的命令,会阻塞后续所有请求,引发服务卡顿,因此业务中需严格避免大键、慢命令。

五.使用场景

  1. 作为数据库

Redis 支持 RDB/AOF 持久化,可替代传统数据库存储体量小、读写极频繁的数据:

  • 场景:用户临时状态、配置信息、积分、排行榜、计数数据
  • 优势:读写性能远高于关系型数据库,架构简单。
  1. 作为缓存(最主流用法)
  • 核心作用:缓存热点数据,拦截大部分查询请求,减轻 MySQL 压力,提升接口响应速度。
  • 常见细分场景:
    • 全量缓存:商品详情、首页 banner、基础字典数据
    • 会话缓存:登录 token、用户会话信息
    • 计算结果缓存:接口返回数据、复杂统计结果
    • 衍生能力:分布式锁、接口限流、布隆过滤器防穿透
  1. 作为消息队列

利用 List 数据结构实现简易消息队列,满足轻量级异步需求:

  • 核心作用:业务解耦、流量削峰、异步处理非核心流程
  • 场景:日志上报、简单任务分发、异步通知、订单后续附属操作
  • 补充:仅适用于低要求、轻量级场景;高可靠、高吞吐场景建议使用专业 MQ(RabbitMQ/RocketMQ)。
相关推荐
heimeiyingwang1 小时前
【架构实战】Canal数据同步:MySQL数据变更实时捕获
数据库·mysql·架构
cdbqss11 小时前
VB2026 动态生成工具栏类 BqGetToolStrip
数据库·oracle·开源·.net·学习方法·教育电商·basic
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第85题】【Mysql篇】第15题:MySQL 的事务中,幻读是怎么解决的?
java·开发语言·数据库·mysql·面试
yoothey1 小时前
MySQL 索引小白面试详解
数据库·mysql
一 乐1 小时前
在线考试|基于Springboot的在线考试管理系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·毕设·在线考试管理系统
玄米乌龙茶1231 小时前
数据库与缓存核心概念
数据库·缓存
小陈的进阶之路1 小时前
MySQL 索引
数据库·mysql
消失的旧时光-19431 小时前
企业认证与安全体系(五):Spring Security + JWT + Redis 企业级认证实战
redis·安全·spring·spring security·jwt
無限進步D1 小时前
MySQL 子查询
数据库·mysql