【Redis前奏曲】初识Redis

news2024/11/26 19:33:59

文章目录

  • 一.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.coloradmin.cn/o/1342101.html

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

相关文章

使用vue3实现echarts漏斗图表以及实现echarts全屏放大效果

1.首先安装echarts 安装命令&#xff1a;npm install echarts --save 2.页面引入 echarts import * as echarts from echarts; 3.代码 <template> <div id"main" :style"{ width: 400px, height: 500px }"></div> </template> …

ffmpeg两种windows版本区别说明

版本一 必须拷贝exe和dll文件才能使用&#xff0c;如果缺少dll则exe不正正常执行 如果缺少dll &#xff0c;执行 exe会报错如下 版本2 直接拷贝exe就能使用&#xff0c;没有依赖的环境

(JAVA)-(多线程)-线程池

线程池&#xff0c;顾名思义就是存放线程的池子&#xff0c;当有任务时能够随时取用线程&#xff0c;任务结束后能够放回线程池中。如果把线程比成碗&#xff0c;线程池就像一个碗柜一样。 使用线程池的好处&#xff1a; 1.当有大量线程对象时&#xff0c;减少了线程创建销毁…

浅谈直流电表在韩国充电桩生产厂家的应用

I.背景&#xff1a; 近几年为应对温室气体的排放导致的全球变暖、气候变化等问题,各大国纷纷对焦推进电动汽车&#xff0c;从而减少传统燃油汽车带来的大量温室气体排放。而推进新能源汽车的各项举措之中&#xff0c;充电桩的基础建设&#xff0c;又是其中的重中之重&#xff…

【MySQL】数据库并发控制:悲观锁与乐观锁的深入解析

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 数 据 库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 悲观锁&#xff08;Pessimistic Locking&#xff09;: 乐观锁&#xff08;Optimistic Locking&#xff09;: 总结&#x…

2023年,我46岁,进入关机模式,稳了

关键词&#xff1a;持续关机、稳住基本盘、力量训练、新开端。 持续关机 对于性格内向的我&#xff0c;过上安静的生活才是美好岁月的真正开端。我尽量减少不必要的活动&#xff0c;能不出门就不出门。 在10月份&#xff0c;我停止了日更栏目“大志聊赚钱”&#xff0c;该栏目…

紧固件行业的市场规模和增长率是怎样的,主要市场区域有哪些?

分析标准件行业市场容量和增长率 标准件指的是在各种工业设备中广泛使用的连接件&#xff0c;通常由螺栓、螺帽、垫圈等组成。它能够将两个或两个以上的零件牢固地固定在一起&#xff0c;起到传递力量或者关闭效果的作用。标准件是机械制造、汽车、航空、电子、建筑等行业中不…

InterSystems 数据库的存储过程存在哪里

我们都知道 InterSystems 的 Studio 可以创建存储过程。 但这个存储过程我们保存的时候是保存在哪里&#xff1f; 存储逻辑 如果我们在 Studio 创建存储过程的话&#xff0c;存储过程是存储在数据库上面的。 本地文件夹中是没有存储的。 选择系统下面的存储过程&#xff0c…

PostgreSQL10数据库源码安装及plpython2u、uuid-ossp插件安装

PostgreSQL10数据库源码安装及plpython2u、uuid-ossp插件安装 1、环境2、安装包下载3、安装3.1 、解压3.2、配置3.3、编译安装3.4 、启动与关闭 4、安装 uuid-ossp 、plpython2u插件5、参考 1、环境 centos 7 、 postgresql 10.19 2、安装包下载 postgres 源码安装包 3、安…

Flowable-升级为7.0.0.M2-第三节

目录 启动项目添加虚拟机参数启动成功 启动项目 添加虚拟机参数 java.base/java.langALL-UNNAMED --add-opens java.base/java.mathALL-UNNAMED --add-opens java.base/java.util.concurrentALL-UNNAMED --add-opens java.base/java.netALL-UNNAMED --add-opens java.base/ja…

Docker本地部署开源浏览器Firefox并远程访问进行测试

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器&#xff0c;由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

matplotlib范围曲线简例

想在画&#xff08;平均&#xff09;loss 曲线时顺便表示方差&#xff0c;即每一个 epoch 的平均 loss 用 plot 画曲线&#xff0c;而在曲线周围用一个浅色区域表示方差。效果&#xff1a; 参考 [1-3]&#xff0c;用到 matplotlib.pyplot.fill_between 函数。为显示对浅色区及…

C 语言探究(0)

泛型指针 通常情况下&#xff0c;C只允许相同类型的指针之间进⾏转换。例如&#xff1a;⼀个 字符型指针sptr&#xff08;⼀个字符串&#xff09;和⼀个整型指针iptr&#xff0c;我们不允许把sptr 转换为iptr或把iptr转换为sptr。但是&#xff0c;泛型指针能够转换为任何类型的…

ClickHouse基础知识(四):ClickHouse 引擎详解

1. 表引擎的使用 表引擎是 ClickHouse 的一大特色。可以说&#xff0c; 表引擎决定了如何存储表的数据。包括&#xff1a; ➢ 数据的存储方式和位置&#xff0c;写到哪里以及从哪里读取数据。 默认存放在/var/lib/clickhouse/data ➢ 支持哪些查询以及如何支持。 ➢ 并发数…

使用ChatGLM3自定义工具实现大模型查询MySQL数据库

ChatGLM3-6B 采用了全新设计的 Prompt 格式&#xff0c;除正常的多轮对话外。同时原生支持工具调用&#xff08;Function Call&#xff09;、代码执行&#xff08;Code Interpreter&#xff09;和 Agent 任务等复杂场景。 什么是工具调用 大模型虽然强大&#xff0c;但是由于…

yolov8 小目标物体检测、分割加强方法

常见下列三种方法加强小物体检测: Detectron2 (这个与yolov8不大相关,这篇不做多介绍,meta算法) SAHI 算法: Slicing Aided Hyper Inference(切片辅助超推理)通过图像切片的方式来检测小目标。 YOLOv8 变体YOLOv8-P2,旨在提高检测小物体的性能。 1、SAHI 算法 学习参…

WPF Button使用漂亮 控件模板ControlTemplate 按钮使用控制模板实例及源代码 设计一个具有圆角边框、鼠标悬停时颜色变化的按钮模板

续前两篇模板文章 模板介绍1 模板介绍2 WPF中的Button控件默认样式简洁&#xff0c;但可以通过设置模板来实现更丰富的视觉效果和交互体验。按钮模板主要包括背景、边框、内容&#xff08;通常为文本或图像&#xff09;等元素。通过自定义模板&#xff0c;我们可以改…

【XR806开发板试用】XR806串口驱动CM32M对小厨宝的控制实验

一.说明 非常感谢基于安谋科技STAR-MC1的全志XR806 Wi-FiBLE开源鸿蒙开发板试用活动,并获得开发板试用。 XR806是全志科技旗下子公司广州芯之联研发设计的一款支持WiFi和BLE的高集成度无线MCU芯片&#xff0c;支持OpenHarmony minisystem和FreeRTOS&#xff0c;具有集成度高、…

切面编程的理解和使用,Java小白入门(五)

我们进入ruoyi-framework,立刻看到的内容 了解一下aspectj 这个概念 概念 面向切面编程&#xff08;AOP&#xff09; 面向切面编程&#xff08;AOP&#xff09;是一种编程范式&#xff0c;重点聚焦于软件应用程序中的关注点分离。AOP 背后的思想是软件应用程序具有多个切面&a…

【Vue2 + ElementUI】el-table中校验表单

一. 案例 校验金额 阐述&#xff1a;校验输入的金额是否正确。如下所示&#xff0c;点击【编辑图标】会变为input输入框当&#xff0c;输入金额。当输入框失去焦点时&#xff0c;若正确则调用接口更新金额且变为不可输入状态&#xff0c;否则返回不合法金额提示 <templat…