【Redis前奏曲】初识Redis

文章目录

  • 一.Redis的一些特性(优点)
    • 1. 在内存中存储数据
    • 2. 可编程的
    • 3. 可扩展的
    • 4.持久化
    • 5. 聚集(集群)
    • 6. 高可用
    • Redis快的原因
  • 二. 使用案例
    • 1.数据库
    • 2. 缓存
    • 3. 消息队列

一.Redis的一些特性(优点)

我们在上一篇博客中说到,Redis是一个在内存中存储数据的中间件.用作数据库,数据缓存等方面,在分布式系统中发挥着重要的作用.那么Redis有哪些优点特性呢?

1. 在内存中存储数据

在这里插入图片描述
Redis在内存中存储数据.MySQL主要是通过的方式来存储组织数据的,是"关系型数据库".而Redis主要是通过键值对的方式来存储组织数据的,是"非关系型数据库".
Redis中的key都是String,value则可以是string,hashes,set,sorted sets,stream...

2. 可编程的

在这里插入图片描述
针对Redis的操作,可以直接通过简单的交互式命令进行操作,也可以通过一些脚本的方式,批量执行一些操作.(可以带有一些逻辑性)

3. 可扩展的

在这里插入图片描述
即可以在Redis原有的功能基础上再进行扩展,Redis提供了一组API.
可以通过上述C/C++,或者Rust编写Redis扩展.

4.持久化

在这里插入图片描述
我们知道,Redis是把数据存储在内存上的.而内存的数据是"易失"的,比如进程退出或者系统重启就会造成数据丢失.为了解决这个问题Redis会把数据存储在硬盘上,以内存为主,硬盘为辅.(硬盘相当于对内存的数据进行了备份)如果Redis重启,就会在重启时加载硬盘中的备份数据使Redis的内训恢复到重启之前的状态.

5. 聚集(集群)

在这里插入图片描述
Redis作为一个分布式系统中的中间件,集群是一个很重要的特性.
上述中的"水平扩展",就类似于分库分表.
一个Redis能存储的数据是有限的(内存空间是有限的),我们就可以引入多个主机,部署多个Redis节点,每个Redis存储数据的一部分.

6. 高可用

在这里插入图片描述
高可用—>冗余/备份
Redis自身也是支持主从结构的,从节点就相当于主节点的备份.

Redis快的原因

  1. Redis数据在内存中,相比于访问硬盘的数据库,就要快很多.
  2. Redis核心功能都是比较简单的逻辑,核心功能都是比较简单的操作内存的数据结构.
  3. 从网络角度上来说,Redis使用的是IO多路复用(使用一个线程,管理很多个socket)的方式(epoll)
  4. Redis使用的是单线程模式,减少了不必要的线程之间的竞争开销.

二. 使用案例

1.数据库

在这里插入图片描述
Redis做数据库,主要解决的是快,性能好.但是使用这样的内存数据库,存储大量的数据,就需要不少的硬件资源.(此时Redis中存的是全量数据,这里的数据是不能随便丢的.)

2. 缓存

在这里插入图片描述
caching

使用MySQL存数据,能够存储的数据量很大,但是它很慢.所以我们可以将其中的20%的热点数据拿出来,存储在Redis中,此时Redis用来做缓存.(此时Redis中存的是部分数据,全量数据都是以mysql为主的,即使Redis中数据没有了,可以从mysql中再次读取加载)

session storage
我们在前面的博客中讲到 cookie是用来实现用户身份信息的保存的,它需要搭配 session 一起使用. cookie 只是在浏览器这边存储了一个用户的身份标识(sessionId).而服务器才真正的存储了用户数据.
而当我们的应用服务器有多个时,通过负载均衡器的分配,每一个用户的数据都有可能随机落在不同的应用服务器上,那么我们要在每一个应用服务器上都保存用户的数据吗,答案是否定的.这样一来,不仅不同的应用服务器会多次存储用户数据浪费资源,而且用户端也会不断的登录造成不好的体验.
在这里插入图片描述
那为了解决上述问题.我们应该怎么做呢?

  1. 让负载均衡器每一次将同一用户的请求始终分配在同一个应用服务器上.(不是采用轮询的算法,而是要通过userId之类的方式来分配机器)
  2. 将会话数据单独拿出来,放在一组独立的机器上存储(Redis)
    在这里插入图片描述

3. 消息队列

在这里插入图片描述

Redis是一个使用内存存储数据的中间件,一般被作为 **内存数据库/缓存/消息队列 **来使用.

值得注意的是 Redis也是一个客户端服务器结构的程序. 它是通过网络操作内存的.

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

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

相关文章

本地部署Python Flask并搭建web问答应用程序框架实现远程访问

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架,让我们可以使用Python语言快速实现一个网站或Web服务,本期教程…

比起 Pandas, 你更需要 Polars:详细指南

在数据分析领域,Python 由于其多功能性和广泛的库生态系统而成为一种流行的语言。数据处理和分析在提取见解和做出明智决策方面发挥着至关重要的作用。然而,随着数据集的规模和复杂性不断增长,对高性能解决方案的需求变得至关重要。 有效地处…

bat 脚本 启动、停止、重启 SpringBoot 服务命令

启动 echo off chcp 65001 echo. title XXXX微服务项目后台程序 echo 启动SpringBoot服务 echo.:: 参数赋值 set JAVA_OPTS-Xms512m -Xmx1024m -XX:MetaspaceSize128m -XX:MaxMetaspaceSize512m :: 启动服务命令 java -jar -Dfile.encodingutf-8 %JAVA_OPTS% demo1.jar:: 因为…

【Docker】添加指定用户到指定用户组

运行Docker ps命令,报错:/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied 创建docker用户组 安装docker时默认已经创建好 sudo groupadd docker添加用户加入docker用户组 此处以用户user为例 sudo usermo…

flutter学习-day22-使用GestureDetector识别手势事件

文章目录 1. 介绍2. 使用2-1. 单击双击和长按2-2. 拖动和滑动2-3. 缩放 3. 注意点 1. 介绍 在 flutter 中,GestureDetector 是手势识别的组件,可以识别点击、双击、长按、拖动、缩放等手势事件,并且可以与子组件进行交互,构造函数…

cf918div4的E题讲解

虽然是div4,但是打的稀烂,哭死。 E题看了jiangly的题解豁然开朗,原来思路这么简单。被自己蠢到了,我傻傻的用前缀和,两层for枚举区间,不出意外TLE了,写的那一刻就知道要超时,但是没…

微信小程序全部内嵌H5遇到的问题记录

微信小程序内嵌H5遇到的问题 问题1:js-sdk的配置h5里面微信公众平台 问题2:业务域名的配置小程序开发微信公众平台 问题3:H5与小程序的消息传递。方案1H5 方案2H5页面小程序开发 方案3H5页面小程序页面 使用H5来开发APP,之后将该H…

TG7050CKN,TG7050SKN ,TG7050CMN,TG7050SMN

爱普生推出的温补晶振型号:TG7050CKN,TG7050SKN ,TG7050CMN,TG7050SMN频率范围为 10mhz ~ 54mhz 适用于广泛的频率需求。这几款的特点就是耐高温,温度可达105℃高温,而且都是高稳定性温补晶振,&…

Springboot单元测试mock踩坑

mock bean方式 //mock bean方式一MockBeanpublic UserMapper userMapper;//mock bean方式二Beanpublic LogMapper logMapper() {return Mockito.mock(LogMapper.class);} 如何注册mapstruct bean //扫描mapstruct包路径ComponentScan("xxx.xxx.mapstruct")public cl…

ERP与智能商品系统在供应链管理上有哪些区别和优势?

ERP系统和智能商品系统在供应链管理方面有以下区别和优势: 范围和综合性:ERP系统涵盖了企业的整个供应链管理过程,包括供应商管理、采购管理、库存管理、生产计划和物流管理等。它可以实现供应链上下游的信息共享和协同,提高供应…

计算机网络复习2

物理层 文章目录 物理层通讯基础奈奎斯特定理香农定理编码与调制交换传输介质(了解)物理层设备 通讯基础 数据信号码元信源信道信宿单工通道:只有一个方向半双工通道:不能同时发送和接收全双工通道 奈奎斯特定理 规定&#xff…

c++ map unordered_map 区别

目录 map访问,没有key会获取默认值 std::map 和 std::unordered_map 区别 map访问,没有key会获取默认值 在 C++ 的 std::map 中,如果使用 operator[] 访问一个不存在的键,它会创建一个新的键,并将其关联的值初始化为该值类型的默认值。如果值类型是内置类型(例如 int、…

下载完redis每次启动项目必须打开redis服务,否则不能运行,解决方法

redis-server.exe --service-install redis.windows.conf 在redis的目录启动终端运行此命令可以下载redis服务,然后在服务里面启动redis服务,之后就可以不用打开小黑框再启动了 redis下载地址: Redis下载安装教程_redis 3.2下载-CSDN博客

MFC:如何将JPEG等图片显示到对话框客户区

步骤: 0、打开VS2022创建一个基于对话框的MFC应用,项目名称命名为PicShow,创建完成后将对话框客户区中的"确定"按钮等内容删除(具体步骤略)。 1、建立菜单栏:文件->打开、退出。具体步骤&#x…

【C++核心编程(一)】

一、内存分区模型 C程序在执行时,将内存大方向划分为4个区域: 代码区:存放函数体的二进制代码,由操作系统进行管理的。 全局区:存放全局变量和静态变量以及常量。 栈区:由编译器自动分配释放,存放函数的…

《Vue2.X 进阶知识点》- 防 ElementUI Divider 分割线

前言 使用 el-divider 背景为白色是没问题的。 但当背景换成其它颜色,问题就出现了!! 仔细看原来是两层,默认背景色是白色。 想着把背景色改为透明应该能用,结果发现背面是一条实线,难怪要用白色遮挡…不符…

ChatGPT4.0(中文版)国内无限制免费版(附网址)

ChatGPT,由OpenAI开发的人工智能语言模型。它是你的数字对话伙伴,无论你有何问题或需要什么帮助,它都能提供有用的信息。 经过不断的研发和更新,ChatGPT的性能和功能得到了显著提升。现在,我们将重点介绍ChatGPT的两个…

【SpringCache】SpringCache详解及其使用,Redis控制失效时间

一、使用 在 Spring 中&#xff0c;使用缓存通常涉及以下步骤&#xff1a; 1、添加缓存依赖&#xff1a; 确保项目中添加了缓存相关的依赖。如果使用 Maven&#xff0c;可以在项目的 pom.xml 文件中添加 Spring Cache 的依赖。 <dependency><groupId>org.spring…

vue3全网最全教程-----(2)

目录 3.9.【watch】 * 情况一 * 情况二 情况三 * 情况四 情况五 3.10. 【watchEffect】 3.11. 【标签的 ref 属性】 3.12. 【props】 3.13. 【生命周期】 3.14. 【自定义hook】 3.9.【watch】 作用&#xff1a;监视数据的变化&#xff08;和Vue2中的watch作用一致&am…

TVS 管选型与 ESD 防护设计

文章目录 ESD 防护设计 TVS管的基础特性 TVS管的选型方法 TVS管布局细节 参考文献 ESD 防护设计 静电防护设计是让电路板外接的各类金属按钮开关在接触到外界空气放电或接触放电时&#xff0c;在这种瞬间出现的大能量注入到电路板后&#xff0c;能够通过某种设计好的通道泄…