Redis—相关背景

Redis—相关背景

  • 🔎Redis—特性
    • In-memory data structures—在内存中存储数据
    • Programmability—可编程性
    • Extensibility—可扩展性
    • Persistence—持久化
    • Clustering—集群
    • High availability—高可用
  • 🔎Redis 为什么快
  • 🔎Redis 的使用场景
    • Real-time data store—实时数据存储
    • Caching—缓存
    • session storage—会话存储
    • Streaming&messaging—消息队列

Redis官网

🔎Redis—特性


MySQL 主要是通过 “表” 的方式组织存储数据 → 关系型数据库
Redis 主要是通过 “键值对” 的方式组织存储数据 → 非关系型数据库

In-memory data structures—在内存中存储数据


在内存中存储数据

Redis 通过键值对方式组织存储数据
其中 key 都是 string 类型, value 可以是 strings, hashes, lists, sets, sorted sets, streams…

在这里插入图片描述

Programmability—可编程性


可编程性

针对 Redis 的操作
可直接通过简单的交互式命令进行操作
也可以通过一些脚本的方式批量执行一些操作

在这里插入图片描述

Extensibility—可扩展性


可扩展性

可以在 Redis 原有的功能基础上进行扩展(通过 C, C++, Rust 进行扩展)

在这里插入图片描述

Persistence—持久化


持久化

Redis 为了能够快速访问, 将数据存储至内存中
内存中的数据是易丢失的(进程退出, 系统重启…)
因此 Redis 也会将数据存储至硬盘(硬盘中的数据相当于是对内存的数据进行备份) → 持久化
例如当系统重启, 就会在重启时加载硬盘中的备份数据, 使 Redis 的内存恢复如初

在这里插入图片描述

Clustering—集群


集群

一个 Redis 所能存储的数据是有限的(内存空间有限)
集群 → 引入多台主机, 部署多个 Redis 节点, 让每个 Redis 存储一部分数据

在这里插入图片描述

High availability—高可用


高可用

你可以将高可用理解为备份

Redis 支持主从结构, 从节点相当于是主节点的备份

在这里插入图片描述

🔎Redis 为什么快


Redis 对比 MySQL 为什么快

  1. Redis 的数据存储在内存中, MySQL 的数据存储在硬盘中
  2. Redis 的核心功能都是比较简单的操作内存结构
    MySQL 中的一些操作较为复杂. 例如插入数据时, 如果存在约束, 需要查看具体的约束状态…
  3. Redis 使用了 IO 多路复用的方式(一个线程管理多个 socket)
  4. Redis 默认情况下使用单线程处理请求, 避免多线程之间的锁竞争和锁带来的开销(大多数简单的的读写操作, 使用单线程方式更高效)
    MySQL 处理复杂查询时采用多线程处理, 导致额外的开销

🔎Redis 的使用场景


  1. Real-time data store—实时数据存储
  2. Caching—缓存
  3. session storage—会话存储
  4. Streaming&messaging—消息队列

在这里插入图片描述

Real-time data store—实时数据存储


实时数据存储, 将 Redis 作为数据库

大多数场景下的数据存储针对的是存储量大
而一些特定场景要求的是存储速度快, Redis 针对的就是这样的情况

将 Redis 作为数据库, 存储的是全部数据, 这里面的数据不能随便丢失

Caching—缓存


根据二八原则, 将热点数据存储至 Redis, MySQL 中依旧存储全部数据
即使 Redis 中的数据丢失, 也可以从 MySQL 中继续加载

session storage—会话存储


cookie → 浏览器存储的用户身份标识
session → 服务器存储的真正的用户数据

只有一台应用服务器时, 会话信息就存储在该应用服务器上
有多台应用服务器之后, 会话信息该如何存储呢?

举个栗子🌰

用户 A 登录一个网站, 输入对应的用户名和密码

只有一台应用服务器时, 无需负载均衡, 会话信息存储在该服务器上
此时 A 再次点击该网站, 该网站已经保存了 A 的会话信息, 无需进行登录操作

当有多台应用服务器时, 如果会话信息分别保存在多台应用服务器, 那么当 A 再次点击该网站, 又需要进行登录操作
万一 A 很不幸, 每次点击该网站, 负载均衡器都将其请求分配到了不同的应用服务器, 那么 A 会一直进行登录操作

对于上述的问题, 解决方式有 2 种🍂

  1. 通过特定的算法, 让 A 用户的请求每次都指定到同一个应用服务器
  2. 将会话信息单独保存至一台独立的机器(Redis)

在这里插入图片描述

Streaming&messaging—消息队列


有很多比较知名的消息队列, 例如 RabbitMQ, Kafka, RocketMQ…

Redis 也具有消息队列的功能
如果当前场景中, 对于消息队列的功能依赖比较少, 并且不想引入其他依赖的情况下, 可以将 Redis 作为消息队列

生产者可以将消息推送到 Redis 列表中, 然后消费者从列表中获取消息进行处理


🌸🌸🌸完结撒花🌸🌸🌸


在这里插入图片描述

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

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

相关文章

【TiDB理论知识06】PD架构与作用

目录 一 PD的架构与功能 PD架构 PD作用 名词解释 路由功能 二 TSO的分配 概念 分配过程 性能问题 高可用问题 三 PD的调度原理 总流程 1 信息收集 2 生成调度 3 执行调度 四 Label的作用 Label的配置 给TiKV打标签 PD配置 一 PD的架构与功能 PD架构 PD集群…

学习Maven Web 应用

Maven Web 应用 本章节我们将学习如何使用版本控制系统 Maven 来管理一个基于 web 的项目,如何创建、构建、部署已经运行一个 web 应用。 创建 Web 应用 我们可以使用 maven-archetype-webapp 插件来创建一个简单的 Java web 应用。 打开命令控制台,…

数据库应用:Redis安装部署

目录 一、理论 1.缓存 2.关系型数据库与非关系型数据库 3.Redis 4.Redis安装部署 5.Redis命令工具 6.Redis数据库常用命令 7.Redis多数据库操作 二、实验 1.Redis安装部署 2.Redis命令工具 3.Redis数据库命令 4.Redis多数据库操作 三、问题 1.RESP连接CentOS 7 R…

【单片机】温控系统参数辨识及单片机PID控制

温控系统参数辨识及单片机PID控制 1. 温控系统组成2. matlab辨识系统参数2.1 采集阶跃响应信号导入matlab系统辨识模块 PID控制 1. 温控系统组成 半导体制冷片正向通电制冷,反向通电制热。系统采用半导体制冷片(帕尔贴)作为执行单元&#xf…

微信小程序 样式和全局配置

WXSS wxss 把屏幕分为750个物理像素,大屏大,小屏小,随着设备不一致自动适配 推荐使用iPhone6作为标准,1个rpx 0.5个px,把px乘以2就是rpx的参数 import 导入外部样式表 import /common/common.wxss 样式 权重一…

Vue2 第四节 计算属性,监视属性

1.计算属性 2.监视属性 3.计算属性与监视属性之间的关系 一.计算属性 定义:要用的属性不存在,要通过已有属性计算得来原理:底层借助了Object.defineproperty方法提供的getter和setterget函数什么时候会执行:初次读取的时候会执…

Redis Sentinel 及 Redis Cluster

Redis Sentinel Redis-Sentinel(哨兵模式)是Redis官方推荐的高可用性(HA)解决方案,当用Redis做Master-slave的高可用方案时,假如master宕机了,Redis本身(包括它的很多客户端)都没有实现自动进行主备切换,而Redis-sentinel本身也是…

day47-SSM分页

SSM分页(增删改查登录注册) applicationContext.xml中加入mybatis-config.xml路径 mybatis-config.xml Mapper接口 Service接口及其实现类 Mapper.xml page.jsp personDetail.jsp addPerson.jsp updatePerson.jsp login.jsp regist…

正则表达式简略记录

1、元字符: . ------- 匹配除换行符外的任意字符 \w ------- 匹配字母或数字或下划线或汉字 \s ------- 匹配任意的空白符 \d ------- 匹配数字 \b ------- 匹配单词的开始或结束 ^ ------- 匹配字符串的开始 $ ------- 匹配字符串的结束 2、字符转义 \ 3、重复次…

Java、Java EE、Spring和Spring Boot核心注解

简介 文章迁移至个人博客 此页面包含常用 Java、Java EE、Spring、 Spring Boot、JPA 常用注解的一站式说明。 Spring核心注解 Component注解 Component 注解表明被注解的类是一个“spring bean/组件”。Component注解告诉Spring容器自动创建Spring bean。 Autowired注解 …

搭建自己的Git服务器

环境 服务端:Ubuntu 22.04 客户端:Win11_x64 前提条件:需要确保在Windows机器上能够ping通Ubuntu服务器, 并且服务端与客户端均已安装了Git软件 服务端上的配置操作 以Ubuntu服务器作为Git服务端的运行环境,并方便后期免密推…

kafka消费报错卡死:内存溢出OutOfMemoryError: Java heap space

文章目录 现象排查解决 现象 我们信控平台使用Java语言开发,Spring Cloud微服务架构,采用容器化部署,所有服务都部署在docker里面,使用docker-compose进行管理,使用portainer进行监控平台部署客户现场后,一…

如何做好IT类的技术面试

目录 一、IT行业的招聘渠道 二、如何做好技术面试官 三、谈谈IT行业如何做好招聘工作 四、面试IT公司的小技巧 五、面试有哪些常见的问题 六、关于面试的一些建议 面试可能是我们每个人都必须会遇到的事情,而技术面试更具有专业性,以下会从几个方面…

openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符

文章目录 openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符23.1 时间日期操作符23.2 时间/日期函数23.3 TIMESTAMPDIFF23.4 EXTRACT23.5 date_part openGauss学习笔记-23 openGauss 简单数据管理-时间/日期函数和操作符 23.1 时间日期操作符 用户在使用时…

【Java 高频面试闯关秘籍】大梦谁先觉,平生我自知

一、mysql使用innodb引擎,请简述mysql索引的最左前缀如何优化orderby语句? 关键点: (1)如果排序字段不在索引列上,filesort有两种算法:mysql就要启动双路排序和单路排序 (2&#x…

【系统监控程序】

用python编写一个系统监控程序,需要每隔一秒钟记录系统每个进程的资源占用和整体的资源占用情况,并输出成json,保存到文本文件。 import psutil import json import timedef get_process_usage():process_list []for proc in psutil.proces…

系统资源监控程序的改进

当需要监控硬盘读写和网络传输时,我们可以进一步使用psutil库来获取这些信息。以下是修改后的示例程序,增加了对硬盘读写和网络传输的监控: import psutil import json import timedef get_process_usage():process_list []for proc in psu…

解决分类任务中数据倾斜问题

大家好,在处理文本分类任务时,基准测试流行的自然语言处理架构的性能是建立对可用选项的理解的重要步骤。在这里,本文将深入探讨与分类相关的最常见的挑战之一——数据倾斜。如果你曾经将机器学习(ML)应用于真实世界的…

React Native RN state props

state: 是RN 专门用来标识是否重新渲染,通过属性的值来更新数据,React 内部会监听 state 的变化,一旦发生变化就会主动触发组件的 render() 方法来更新 Dom 结构,另外state是组件私有的,是没有办法通过其他…

VS+QT+PCL点云显示转网格表面体窗体实现

程序示例精选 VSQTPCL点云显示转网格表面体窗体实现 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对<<VSQTPCL点云显示转网格表面体窗体实现>>编写代码&#xff0c;代码整洁&…