news 2026/6/15 17:52:49

【Redis】从零开始掌握redis --- 认识redis

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Redis】从零开始掌握redis --- 认识redis

任何收获都不是偶然,
一点一滴的进步终会让未来的你焕然一新!

从零开始认识redis

  • 1 认识redis
  • 2 浅谈redis在分布式系统中的应用
  • 3 redis的特性

1 认识redis

redis的官方文档
redis文档中给了redis清晰的定位:

  • redis全程是Remote Dictionary Server(远程字典服务器),指明其储存的结构是“键值对”。
  • 作为非关系性数据集成(NoSql)中间件,用更快的速度、更多内存和更高的准确性构建程序。

NoSQL(Not Only SQL) 并不是否定 SQL,而是补充传统关系型数据库的一种新范式。

✅ NoSQL 特征:

特性SQL(关系型)NoSQL(非关系型)
数据结构结构化(Structured)非结构化(Unstructured)
数据关系强关联(主外键)无关联(嵌套/冗余存储)
查询语言SQL 标准语句每种数据库自定义
事务支持支持 ACID多数不支持 ACID,仅保证最终一致性
存储方式基于磁盘基于内存
扩展方式垂直扩展(升级硬件)水平扩展(多机分片)
使用场景安全性高、结构稳定、金融电商等海量数据、实时访问、性能敏感系统

特性对比无法感受到两种的差距,我们举个例子,比如现在我想要储存一个学生的基本信息,使用sql和redis分别进行实现:

createtablestudent(idint,namevarchar(20),ageint);insertintostudent(id,name,age)values(1,'张三',18);
# 1. 存储单个学生信息(Hash结构:键为student:1,字段为id、name、age,对应值分别为1、张三、18)HSET student:1id1name"张三"age18# 会得到一个数据{"id":1,"name":"张三","age":18}

进行查询时:

操作SQLRedis
查询用户信息SELECT * FROM student WHERE id=1get student :1

2 浅谈redis在分布式系统中的应用

单机架构简而言之就是只在一个服务器上提供的服务(内部可能使用了数据库,网络,等),一个服务器负责业务处理,也负责数据存储。

当业务进一步增长,数据量大大提升,一台主机难以支持时,就需要引入更多的主机,也就出现了分布式架构。
每台主机的硬件资源包括内存,cpu,硬盘,网络…服务器的每次请求都会消耗一定资源,同一时刻处理大量的请求就可能导致某个硬件资源不够用了,遇到资源不够的问题有两种主要解决思想:

  1. 开源:简单粗暴的解决,增加更多的硬件资源。一台主机扩展到极限了,就需要加入更多的主机了。引入多台主机就构成了分布式系统了。
  2. 节流:针对程序优化,优化数据结构,数据库存储结构等等…这就看程序员的个人能力了

注意:引入分布式,是万不得已的,系统的复杂度会大大提高,出现bug的概率越高。

最简单的分布式系统就是一个业务服务器+一个储存服务器。但是当请求量提升时,可能会出现一台业务服务器处理不过来的情况,这时可以在引入一台业务服务器,通过网关做负载均衡,他们共同读取一个数据库。
当当处理的请求量增加,导致数据库读写消耗增大时,可以将储存服务器也增添一个,设置一个主服务器和一个从属服务器,他们之间会进行数据同步:主服务器负责数据写操作,从服务器负责数据操作,主服务器会将写入的数据同步到读服务器中。

此时又出现了一个新问题,对于一个十分频繁且耗时的查询(比如查询全体成员成绩),每次查询会占用大量的资源。同时因为数据库的处理读取速度很慢,频繁的查询更会导致超时。这时就需要对热数据进行处理,引入缓存,将热数据储存到缓存中。当业务服务器处理请求时先在缓存服务器中查找,没有再去存储服务器中查询。当然这样也会引入很多的问题:

  1. 缓存数据应该保留多久?
  2. 数据库数据修改了导致和缓存中不一致了怎么办?

这个redis就是作为缓存服务器出现的。由于其储存是在内存中进行的,读写速度是比硬盘读写高好几个数量级的!这也是redis快速的重要原因:

操作类型Redis(单线程)MySQL(InnoDB 引擎)PostgreSQL
读 QPS(每秒查询数)10 万~100 万 +1 万~5 万(开启缓存)1 万~5 万
写 QPS(每秒写入数)5 万~50 万 +5000~2 万(开启缓存)5000~2 万
平均响应延迟微秒级(~100μs)毫秒级(~10ms)毫秒级

注意:redis的快速是相对来说的,比关系型数据库快,但还是比不过内存变量,毕竟redis说到底还是网络服务中间件,网络的延迟是不可避免的!

3 redis的特性

redis是一个在内存中储存数据的中间件,可以用于数据缓存,也可以用做数据库,通常是在分布式系统中发挥作用。

同时redis也会提供持久化的能力,因为内存数据一旦重启就会消失,所以在硬盘中储存一份是非常有必要的!并且redis是支持集群的(一个redis主机储存的数据是有限的,引入多个主机可以提供更好的能力)!

redis最重要的特性就是快,其快的原因:

  1. redis本质是使用内存进行存放数据的,读取数据相比于硬盘本身就高好几个数量级
  2. redis核心功能的实现简单,核心功能都是比较简单的操作内存的数据结构
  3. redis的网络使用IO多路复用(epoll),使用一个线程,基于事件触发构建的高效IO。
  4. redis使用的是单线程模型,减少了不必要的线程之间的竞争开销。通常:单线程不一定会提高速度,对于CPU密集型任务,使用多个线程可以充分使用CPU多核资源。但是对于redis来说,主要操作是操作内存的数据结构,并不会占用很多CPU资源(也就是单核和多核的区别不大)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/15 12:18:22

ROS2的:服务的demo代码

1、创建目录、工具包 # 创建文件夹:工作空间、src mkdir -p ros2_ws/src# 进入 src cd ros2_ws/src# src 目录下:创建功能包 ros2 pkg create demo_cpp_service --build-type ament_cmake --dependencies rclcpp std_msgs 2、创建srv文件:服…

作者头像 李华
网站建设 2026/6/15 13:16:39

谈判策略模拟:LobeChat提供攻防应对方案

谈判策略模拟:LobeChat提供攻防应对方案 在企业高管准备一场关键并购谈判的前夜,他打开电脑,启动本地运行的 LobeChat,选择“资深谈判顾问”角色,上传了对方公司最近三年的公开财报与过往交易记录。输入第一句模拟开场…

作者头像 李华
网站建设 2026/6/15 14:21:51

【SVD】SVD数学推导,物理意义及其经典应用

【SVD】SVD数学推导,物理意义及其经典应用一、SVD的核心数学基础二、右奇异向量矩阵V的影响:定义“输入空间的核心方向”1. 数学本质:ATAA^T AATA的特征向量矩阵2. 几何意义:输入空间的正交坐标系3. 关键影响:特征选择…

作者头像 李华
网站建设 2026/6/15 6:29:37

如何在5种简单方法中将照片从小米Redmi传输到Redmi

照片通常包含重要的个人回忆,如家庭照片、旅行快照或特殊事件,因此在升级设备时安全地移动它们变得至关重要。许多Redmi用户想知道如何将照片从Redmi传输到Redmi,因为通过蓝牙或云进行手动传输可能很慢或很麻烦。本文将提供5种有效的方法来进…

作者头像 李华
网站建设 2026/6/15 6:37:56

LobeChat主题定制教程:打造品牌专属AI界面

LobeChat主题定制教程:打造品牌专属AI界面 在企业纷纷拥抱大语言模型的今天,一个共通的挑战浮出水面:如何让自家的AI助手不只是“能用”,而是真正“像自己”?无论是客服入口、内部知识库,还是产品演示系统&…

作者头像 李华
网站建设 2026/6/15 13:15:10

【AI面试必知必会】面试必看:AI 编程工具该如何向大厂面试官表述?

在AI编程工具普及的当下,Cursor、Windsurf、Trae Solo等工具已成为开发者提升效率的常用助手。但在互联网大厂面试中,“是否提及AI编程工具使用经验”“如何表述才不踩雷”成为很多候选人的困惑——说浅了怕不加分,说深了怕被质疑“依赖AI、核…

作者头像 李华