当前位置: 首页 > news >正文

【Redis】简介|优点|使用场景|为什么Redis快

目录

一、简介

二、特性(优点)

 三、使用场景


一、简介

  • 内存中存储数据的中间件,用于数据库,数据缓存,在分布式系统中能够大展拳脚
    中间件:应用程序可以直接从 Redis 中获取数据,而不必频繁地访问数据库

二、特性(优点)

  • 在内存中存储数据
    • MySQL主要通过“表”来存储组织数据“关系型数据库”
    • Redis主要通过“键值对”来存储组织数据,“非关系型数据库”
      key都是String,value则是数据结构
  • 可编程的
    • 可以通过简单的交互式命令/脚本方式操作Redis
  • 可拓展的
    • 可以通过C,C++等语言去扩展Redis功能(本质就是一个动态链接库),让Redis支持更多的数据结构,以及更多的命令
      DLL(动态链接库):就像一个工具包,里面有很多的函数和资源,可以根据自己的需要获取
  • 持久化
    • Redis存储数据内存为主,硬盘为辅
      虽然内存的数据是“易失”的(进程退出/系统重启),但是硬盘中备份了数据,使Redis的内存恢复到重启前的状态
  • 支持集群
    • 一个Redis能够存储的数据是有限的(内存空间有限),引入多个主机,部署多个Redis节点,每个Redis存储数据的一部分
      作为分布式系统的中间件,这个特性很关键
  • 高可用
    • 冗余/备份
      Redis自身支持“主从”结构的,从节点就相当于主节点的备份了
  • 速度快
    • 这个快是相对MySQL而言的
      如果是和内存中的操作变量相比,就慢(比如抖音视频中的点赞个数,是选redis存还是hashmap(hashmap直接操作内存,redis还得先通过网络,再操作内存)

 三、使用场景

  • 1)作为数据库
    • 虽然一般数据存储考虑”大“,但是有些情况考虑的是”快“
      Redis存储的可以是全量的数据,不能随便丢失(需要不少的硬件资源)
  • 2)缓存
    • MySQL存数据大且慢,把热点数据拎出来,存在Redis中
      这个时候Redis存储的是部分数据,全量数据还是以MySQL为主,哪怕Redis数据没了,还可以从MySQL这边加载出来
    • Q1:由于分布式系统,当登录后在第一个服务器存储了session后,第二次登录,可能访问第二台服务器,就找不到session,只能重复登录,直到找到对应的session

      • 解决方法1:想办法让负载均衡器,把同一个用户的请求始终打到同一个机器上(不能轮询了,而是要通过userId之类的方式来分配机器
      • 解决方法2:把会话数据单独拎出来,放到一组独立的机器上存储(Redis)


        应用程序重启了,会话不会丢失
  • 3)消息队列(服务器)
    • 基于这个可以实现一个网络版本的生产者消费者模型
      分布式系统来说,服务器和服务器之间,也是需要生产者消费者模型的
      • 优势
        • 解耦合
        • 削峰填谷
  • Redis不能做的事
    • 存储大规模的数据

🔥面试题:为什么Redis快?

  • 存储在内存中,比访问硬盘的数据库要快很多
  • 核心功能都是简单的逻辑,操作内存中的数据结构即可
  • 从网络的角度,使用了IO多路复用的方式(即epoll)
    就是使用一个线程,管理很多个socket
  • 使用单线程模型(更高版本引入了多线程),减少了不必要的线程竞争开销
    多线程通过效率的前提是CPU密集型任务,使用多线程可以充分利用CPU多核资源,但是Redis核心任务:操作内存的数据结构,不会吃很多CPU

相关文章:

【Redis】简介|优点|使用场景|为什么Redis快

目录 一、简介 二、特性(优点) 三、使用场景 一、简介 内存中存储数据的中间件,用于数据库,数据缓存,在分布式系统中能够大展拳脚 中间件:应用程序可以直接从 Redis 中获取数据,而不必频繁地…...

Clisoft SOS与CAD系统集成

Clisoft SOS与CAD系统集成 以下内容大部分来自官方文档,目前只用到与Cadence Virtuoso集成,其他还未用到,如有问题或相关建议,可以留言。 与Keysight ADS集成 更新SOS客户端配置文件sos.cfg,以包含支持ADS的模板&am…...

【linux系统之redis6】redis的安装与初始化

下载redis的linux对应的安装包,并上传到linux虚拟机里面 解压压缩包 tar -zxzf redis-6.2.6.tar.gz解压后,进入redis文件 cd redis-6.2.6执行编译 make && make install看到下图,就说明redis安装成功了 默认的安装路径&#xff0c…...

Backend - EF Core(C# 操作数据库 DB)

目录 一、EF Core 1. 使用的ORM框架(对象关系映射) 2. EFCore 常见两种模式 3. EFCore 提供程序 二、 EF 操作数据库(Code First) 1. 下载NuGet插件 2.创建模型类文件 3.创建DBContext文件 4.Programs.cs文件 5.appsettings.Devel…...

WebSocket 性能优化:从理论到实践

在前四篇文章中,我们深入探讨了 WebSocket 的基础原理、服务端开发、客户端实现和安全实践。今天,让我们把重点放在性能优化上,看看如何构建一个高性能的 WebSocket 应用。我曾在一个直播平台项目中,通过一系列优化措施,将单台服务器的并发连接数从 1 万提升到 10 万。 性能挑…...

我用AI学Android Jetpack Compose之入门篇(2)

我跑成功了第一个Compose应用,但我还是有很多疑问,请人工智能来解释一下吧。答案来自 通义千问 文章目录 1.请解释一下Compose项目的目录结构。根目录模块目录(通常是app)app/build.gradleapp/src/mainapp/src/main/uiapp/src/ma…...

以太网协议在汽车应用中的动与静

为了让网络中的设备能够随时或随地接入网络或离开网络,做到:接入时无需多余的配置就能和其他设备互相通信;离开时又不会导致设备或网络崩溃。以太网从物理层到协议层展现出多方面的灵活性,,使其成为连接各种设备和系统…...

【C语言】_指针与数组

目录 1. 数组名的含义 1.1 数组名与数组首元素的地址的联系 1.3 数组名与首元素地址相异的情况 2. 使用指针访问数组 3. 一维数组传参的本质 3.1 代码示例1:函数体内计算sz(sz不作实参传递) 3.2 代码示例2:sz作为实参传递 3…...

Selenium 的四种等待方式及使用场景

Selenium 的四种等待方式及使用场景 隐式等待(Implicit Wait)显式等待(Explicit Wait)自定义等待(Custom Wait)固定等待(Sleep) 1. 隐式等待 定义: 隐式等待是为 WebD…...

React知识盲点——组件通信、性能优化、高级功能详解(大纲)

组件通信 React 组件通信详解 在 React 中,组件通信是一个核心概念,主要指的是如何让不同的组件共享和传递数据。React 提供了多种机制来实现组件间的数据传递和状态共享。以下是几种常见的组件通信方式,包括:父子组件通信&…...

Vue 按键生成多个表单

本文通过 vueele&#xff0c;通过循环ref的方法生成多个表单,代码如下&#xff1a; <template><div><el-button click"addText" style"margin: 15px 0; ">添加字段</el-button><div v-for"item, index in dataList"…...

网络安全:交换机技术

单播&#xff0c;组播广播 单播(unicast): 是指封包在计算机网络的传输中&#xff0c;目的地址为单一目标的一种传输方式。它是现今网络应用最为广泛&#xff0c;通常所使用的网络协议或服务大多采用单播传输&#xff0c;例如一切基于TCP的协议。组播(multicast): 也叫多播&am…...

Flask 快速入门

1. Flask 简介 1.1 什么是 Flask Flask 是一个用 Python 编写的轻量级 Web 框架&#xff0c;被誉为 微框架。它提供基础功能&#xff0c;如路由、请求处理和模板引擎&#xff0c;但不强迫开发者使用特定库或工具&#xff0c;赋予开发人员高度的自由选择权&#xff0c;以满足不…...

C#设计模式(行为型模式):备忘录模式,时光倒流的魔法

C#设计模式&#xff1a;备忘录模式&#xff0c;时光倒流的魔法 在软件开发中&#xff0c;我们经常会遇到需要保存对象状态&#xff0c;并在未来某个时刻恢复的场景。例如&#xff1a; 撤销操作&#xff1a; 文本编辑器中的撤销功能&#xff0c;游戏中的回退操作。事务回滚&am…...

数据库高安全—角色权限:权限管理权限检查

目录 3.3 权限管理 3.4 权限检查 书接上文数据库高安全—角色权限&#xff1a;角色创建角色管理&#xff0c;从角色创建和角色管理两方面对高斯数据库的角色权限进行了介绍&#xff0c;本篇将从权限管理和权限检查方面继续解读高斯数据库的角色权限。 3.3 权限管理 &#x…...

FastAPI 的依赖注入与生命周期管理深度解析

FastAPI 的依赖注入与生命周期管理深度解析 目录 &#x1f527; 依赖注入与 FastAPI 高级特性 1.1 依赖注入的基础与核心概念1.2 FastAPI 的依赖注入机制与设计理念1.3 FastAPI 依赖注入的异步特性 &#x1f579; 生命周期与依赖的异步管理 2.1 依赖的生命周期管理&#xff1…...

【express-generator】05-路由中间件和错误处理(第一阶段收尾)

一、前言 上篇文章我们介绍了express-generator的请求体解析&#xff0c;重点讲了常用的请求体数据格式&#xff08;JSON/URL 编码的表单数据&#xff09;以及一个FILE文件上传&#xff0c;同时搭配代码示范进行辅助理解。 二、本篇重点 我们继续第一阶段的知识&#xff0c;…...

Linux环境下确认并操作 Git 仓库

在软件开发和版本控制中&#xff0c;Git 已成为不可或缺的工具。有时&#xff0c;我们需要确认某个目录是否是一个 Git 仓库&#xff0c;并在该目录中运行脚本。本文将详细介绍如何确认 /usr/local/src/zcxt/backend/policy-system-backend 目录是否是一个 Git 仓库&#xff0c…...

UDP -- 简易聊天室

目录 gitee&#xff08;内有详细代码&#xff09; 图解 MessageRoute.hpp UdpClient.hpp UdpServer.hpp Main.hpp 运行结果&#xff08;本地通信&#xff09; 如何分开对话显示&#xff1f; gitee&#xff08;内有详细代码&#xff09; chat_room zihuixie/Linux_Lear…...

NVIDIA在CES 2025上的三大亮点:AI芯片、机器人与自动驾驶、全新游戏显卡

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

从Python程序员到AI原生工程师:一条被验证的12周能力跃迁路线图(含6大实操项目+3轮代码评审标准)

第一章&#xff1a;AI原生软件研发团队组建与人才培养 2026奇点智能技术大会(https://ml-summit.org) 构建AI原生软件研发团队&#xff0c;核心在于打破传统“AI软件”割裂分工&#xff0c;转向以模型即接口、数据即契约、推理即服务为设计原语的协同范式。团队角色需重构&…...

从付费软件到自主开发:我用AI和FFmpeg实现了一个录屏工具粱

我为什么会发出这个疑问呢&#xff1f;是因为我研究Web开发中的一个问题时&#xff0c;HTTP请求体在 Filter&#xff08;过滤器&#xff09;处被读取了之后&#xff0c;在 Controller&#xff08;控制层&#xff09;就读不到值了&#xff0c;使用 RequestBody 的时候。 无论是字…...

LabVIEW开发的TestStand多工位并行测试框架:支持独立测试、序列编辑与参数编辑功能...

labview 编写的类teststand多工位并行测试框架&#xff0c;带单独的测试和序列编辑&#xff0c;参数编辑功能&#xff0c;具体的见图片&#xff0c;功能正常&#xff0c;多工位测试&#xff0c;带源码最近在捣鼓一个用LabVIEW编写的类TestStand多工位并行测试框架&#xff0c;感…...

构建具备批判性思维的AI Agent

构建具备批判性思维的AI Agent&#xff1a;从理论到生产级RAG反思循环系统 副标题&#xff1a;拆解GPT-4o、Claude Opus的「逻辑过滤」核心&#xff0c;用LangChain AutoGen Python落地高准确率Agent第一部分&#xff1a;引言与基础 1. 引人注目的标题 &#xff08;本文已单独…...

计算机毕业设计:Python天气数据爬虫可视化分析系统 Django框架 线性回归 数据分析 大数据 机器学习 大模型 气象数据(建议收藏)✅

博主介绍&#xff1a;✌全网粉丝50W&#xff0c;前互联网大厂软件研发、集结硕博英豪成立软件开发工作室&#xff0c;专注于计算机相关专业项目实战6年之久&#xff0c;累计开发项目作品上万套。凭借丰富的经验与专业实力&#xff0c;已帮助成千上万的学生顺利毕业&#xff0c;…...

从大模型 API 生态到 Spring AI:接口、平台与框架三层怎么串起来

一、开始之前&#xff1a;五个真实困惑在正式展开之前&#xff0c;先问你五个问题——这是开发者在接触大模型应用时最常卡住的地方。读完这篇文章&#xff0c;希望每一个你都能自己回答出来。困惑一&#xff1a;「ChatGPT」「GPT-4o」「OpenAI」是同一个东西吗&#xff1f;不是…...

ESP32-CAM无线图像传输系统:从硬件搭建到远程拍照控制

1. ESP32-CAM无线图像传输系统入门指南 第一次接触ESP32-CAM时&#xff0c;我被这个小巧的模块惊艳到了——它集成了摄像头和WiFi功能&#xff0c;价格却不到百元。这个火柴盒大小的设备&#xff0c;完全可以实现远程监控、智能门铃等物联网应用。很多朋友问我怎么快速上手&…...

还在为安全移除USB设备而烦恼?这款开源工具让你3秒搞定!

还在为安全移除USB设备而烦恼&#xff1f;这款开源工具让你3秒搞定&#xff01; 【免费下载链接】USB-Disk-Ejector A program that allows you to quickly remove drives in Windows. It can eject USB disks, Firewire disks and memory cards. It is a quick, flexible, por…...

从零构建私有CA链:OpenSSL实战生成根证书与多级签发

1. 为什么需要自建私有CA链&#xff1f; 第一次接触证书体系时&#xff0c;我和大多数人一样有个疑问&#xff1a;为什么不用现成的Lets Encrypt免费证书&#xff1f;直到在金融项目中遇到内网隔离环境才明白&#xff0c;私有CA就像企业内部的身份证制作中心&#xff0c;完全掌…...

M-7J1R(ROSAHL)大型空间设计电解式除湿器模块,专为电气柜与大型展柜微环境 恒温恒湿方案

在工业电气柜、博物馆大型展柜和通信基站的庞大箱体中&#xff0c;由湿气引发的设备故障或文物损坏&#xff0c;其代价往往是巨大的。像传统除湿的有半导体冷凝式和传统的压缩机式除湿方案&#xff0c;在噪音、振动、冷凝水维护等方面很难达到效果&#xff0c;而 RO SAHL 的 M-…...