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

news2025/1/8 16:27:01

目录

一、简介

二、特性(优点)

 三、使用场景


一、简介

  • 内存中存储数据的中间件,用于数据库,数据缓存,在分布式系统中能够大展拳脚
    中间件:应用程序可以直接从 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2273316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

封装深拷贝方法

前言 在今年的四月份我写了一篇有关深拷贝的博客文章 我与深拷贝_radash 深拷贝-CSDN博客。在该文章中有一个令我感到遗憾的点就是我没有实现一个自己手写的深拷贝。如今我想弥补当初的遗憾,在这篇文章中详细的讲述一下如何手写一个深拷贝方法。 lodash中是如何实…

maven多模块项目编译一直报Failure to find com.xxx.xxx:xxx-xxx-xxx:pom:1.0-SNAPSHOT in问题

工作中项目上因为多版本迭代,需要对不同迭代版本升级版本号,且因为项目工程本身是多模块结构,且依然多个其他模块工程。 在将工程中子模块的pom.xml中版本号使用变量引用父模块中定义的版本号时,一直报Failure to find com.xxx.x…

uniapp 微信小程序 自定义日历组件

效果图 功能&#xff1a;可以记录当天是否有某些任务或者某些记录 具体使用&#xff1a; 子组件代码 <template><view class"Accumulate"><view class"bx"><view class"bxx"><view class"plank"><…

Mysql--基础篇--函数(字符串函数,日期函数,数值函数,聚合函数,自定义函数及与存储过程的区别等)

MySQL提供了丰富的内置函数&#xff0c;涵盖了字符串处理、数值计算、日期和时间操作、聚合统计、控制流等多种功能。这些函数可以帮助你简化SQL查询&#xff0c;提升开发效率。 除了内置函数&#xff0c;MySQL还支持自定义函数&#xff08;User-Defined Functions&#xff09;…

关于Mac中的shell

1 MacOS中的shell 介绍&#xff1a; 在 macOS 系统中&#xff0c;Shell 是命令行与系统交互的工具&#xff0c;用于执行命令、运行脚本和管理系统。macOS 提供了多种 Shell&#xff0c;主要包括 bash 和 zsh。在 macOS Catalina&#xff08;10.15&#xff09;之前&#xff0c…

外卖院长帝恩以专业打法,开启外卖运营新格局

据中国饭店协会数据显示&#xff0c;2023年我国在线餐饮外卖市场规模已达到15254亿元&#xff0c;同比增长36.7%。预计到2027年&#xff0c;我国在线餐饮外卖市场规模有望达到19567亿元&#xff0c;行业渗透率有望达到30.4%。在这一蓬勃发展的行业背后&#xff0c;离不开无数从…

高清绘画素材3600多张动漫线稿线描上色练习参考插画原画

工作之余来欣赏一波线稿&#xff0c;不务正业版... 很多很多的线稿... 百度网盘 请输入提取码

Power BI如何连接Azure Databricks数据源?

故事背景: 近期有朋友询问&#xff0c;自己公司有一些项目使用了Azure Databricks用于数据存储。如何使用Power BI Desktop桌面开发软件连接Azure Databricks的数据源呢&#xff1f; 解决方案: 其实Power BI是提供了连接Azure Databricks数据源的选项的&#xff0c;只是配置…

了解RabbitMQ中的Exchange:深入解析与实践应用

在分布式系统设计中&#xff0c;消息队列&#xff08;Message Queue&#xff09;扮演着至关重要的角色&#xff0c;而RabbitMQ作为开源消息代理软件的佼佼者&#xff0c;以其高性能、高可用性和丰富的功能特性&#xff0c;成为了众多开发者的首选。在RabbitMQ的核心组件中&…

前端通过后端返回的数据流下载文件

后端返回文件流,下载的文件无法读取,损坏,原因是因为接口处理没有加 blob类型 downloadFile(row.fileId).then(res > { // res 即后端返回的数据流 const blob new Blob([res.data]) if (blob && blob.size 0) { this.$notify.error(内容为空&#xff0c;无法下载…

基于 GEE Sentinel-1 数据集提取水体

目录 1 水体提取原理 2 完整代码 3 运行结果 1 水体提取原理 水体提取是地理信息和遥感技术的关键应用之一&#xff0c;对于多个领域都具有重要的应用价值。它有助于更好地管理水资源&#xff0c;保护环境&#xff0c;减少灾害风险&#xff0c;促进可持续发展&#xff0c;以…

BloombergGPT: A Large Language Model for Finance——面向金融领域的大语言模型

这篇文章介绍了BloombergGPT&#xff0c;一个专门为金融领域设计的大语言模型&#xff08;LLM&#xff09;。以下是文章的主要内容总结&#xff1a; 背景与动机&#xff1a; 大语言模型&#xff08;如GPT-3&#xff09;在多个任务上表现出色&#xff0c;但尚未有针对金融领域的…

ansible-api分析(VariableManager变量)

一. 简述&#xff1a; ansible是一个非常强大的工具&#xff0c;可以支持多种类型(字符,数字,列表&#xff0c;字典等)的变量。除了有大量的内置变量及fact变量&#xff0c;也可以通过多种方式进行变量自定义 。不同方式定义的变量&#xff0c;优先级也不太一样&#xff0c;之…

2025年PMP考试最新报名通知

经PMI和中国国际人才交流基金会研究决定&#xff0c;中国大陆地区2025年第一期PMI认证考试定于3月15日举办。在基金会网站报名参加本次PMI认证考试的考生须认真阅读下文&#xff0c;知悉考试安排及注意事项&#xff0c;并遵守考试有关规定。 一、时间安排 &#xff08;一&#…

Mysql--基础篇--数据类型(整数,浮点数,日期,枚举,二进制,空间类型等)

MySQL提供了多种数据类型&#xff0c;用于定义表中列的数据格式。选择合适的数据类型不仅可以提高查询性能&#xff0c;还能确保数据的完整性和准确性。 一、数值类型 数值类型用于存储整数、浮点数和定点数。根据精度和范围的不同&#xff0c;数值类型可以分为以下几类&…

1-Transformer算法解读

目录 一.RNN与Transfrmer 二.word2vec 三.自注意力机制 四.辅助向量Q/K/V 五.计算过程 六.整体架构​编辑 七.Bert 一.RNN与Transfrmer RNN(循环神经网络)和Transformer都是深度学习中用于处理序列数据的模型,但它们在结构和性能上有显著的区别。以下是它们的一些…

Java Web开发进阶——Spring Boot与Spring Data JPA

Spring Data JPA 是 Spring 提供的一种面向数据访问的持久化框架&#xff0c;它简化了 JPA 的实现&#xff0c;为开发者提供了一种快速操作数据库的方式。在结合 Spring Boot 使用时&#xff0c;开发者能够快速完成数据库访问层的开发。 1. 介绍Spring Data JPA 1.1 什么是Spr…

【计算机操作系统:一、绪论】

第1章 绪论 1.1 操作系统在计算机系统中的地位 1.1.1 存储程序式计算机的结构和特点 存储程序式计算机&#xff08;Stored Program Computer&#xff09;是现代计算机的基础&#xff0c;其概念源于冯诺依曼&#xff08;John von Neumann&#xff09;提出的模型。这种计算机架…

如何查看服务器上的MySQL/Redis等系统服务状态和列表

如果呢你知道系统服务名称&#xff0c;要看状态很简单&#xff1a; systemctl status server-name 比如 systemctl status nginxsystemctl status redis # 等 这是一个nginx的示例&#xff1a; 那问题是 当你不知道服务名称时该怎么办。举个例子&#xff0c;比如mysql在启动…

安科瑞Acrel-1000DP分布式光伏监控系统在浙江安吉成3234.465kWp分布式光伏发电项目中的应用

摘 要&#xff1a;分布式光伏发电站是指将光伏发电组件安装在用户的建筑物屋顶、空地或其他适合的场地上&#xff0c;利用太阳能进行发电的一种可再生能源利用方式&#xff0c;与传统的大型集中式光伏电站相比&#xff0c;分布式光伏发电具有更灵活的布局、更低的建设成本和更高…