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

Redis:初识Redis

Redis:初识Redis

    • Redis 介绍
    • 分布式架构
    • Redis特性
    • 安装Redis


Redis 介绍

在官网中,是如下介绍Redis的:

in-memory data store used by millions of developers as a cache, vector database, document database, streaming engine, and message broker.

  • in-memory data store:在内存中存储数据

这就有点疑问了,为什么要在内存中存储数据?直接定义一个变量不就是在内存中存储数据吗?

是的,在单主机单进程的程序中,只需要通过变量就可以存储数据,供整个进程使用。但是在分布式系统中,多台计算机同时工作,此时一个变量就无法完成多个计算机之间的数据传递了。因为进程之间具有隔离性,最常见的进程间通信方式,是通过网络。而Redis就是基于网络,将内存中的数据给别的计算机上的进程使用的组件!

后续还提到,Redis还可以作为数据库使用,现在市面上的数据库很多,比如MySQLpostgreSQL等等。但是Redis与它们不一样,这些数据库都在硬盘中存储数据,读写的速度很慢,而Redis在内存中读写,速度非常高。

既然这样了,为什么Redis没有完全取代这些数据库?因为内存是非常贵的,因此Redis的存储空间并不大,不能存储大量数据。

最常见的情况下,其实Redis是配合其他数据库使用的,比如用MySQL作为数据库,用Redis做缓存。将访问频率最高的数据放到Redis中,每次用户访问时先查找Redis,如果没找到再去MySQL找。


分布式架构

想让Redis发挥出自身优势,就离不开分布式三个字,接下来介绍一下什么是分布式。

  • 单机架构

在这里插入图片描述

对于一些简单的服务端应用,在服务器上一般都会运行一个服务端进程,使用数据库存储数据。服务进程通过网络接收用户的请求,进行业务处理,并对数据库进行读写。

但是如果用户人数多起来了,那么一台主机就无法应付,比如内存、网络、硬盘、CPU等资源都可能不足,一台主机的能力有限,此时就有两种解决思路:

  1. 对软件进行优化,提高软件的效率
  2. 引入更多的服务器,让多个服务器共同完成一个服务

一旦引入了多台服务器完成一个服务,那么整个系统就称为一个分布式系统了。要注意的是,并不是直接再买一台服务器就可以解决问题的,还要考虑如何部署服务,多个主机上的服务如何完成数据的同步等等复杂的问题,最后问题又回归到了软件层面。

  • 应用数据分离架构

在这里插入图片描述

当有了多台主机,为了提高服务器的效率,会让一个服务器尽可能只干一种活,此时就把应用服务和数据库分离开,服务器只专门负责其中一个任务。

  • 应用服务集群架构

在这里插入图片描述

当业务量再大起来,就要由多台服务器来处理业务逻辑,此时多个服务器共同完成一个任务,称为一个集群。这种架构叫做应用服务集群架构。那么当用户向服务器发起请求,到底要发往哪一台主机?也就是说此时需要有一个进程来决策用户的请求给哪一个应用服务完成,此时就引入了负载均衡,保证每个应用服务承担差不多的任务。

  • 读写分离架构

在这里插入图片描述

当应用服务多了起来,那么整个服务要存储的数据也就多了,此时数据库系统不可能只用一台服务器处理,所以就要用多个服务器来共同完成数据存储。

之前说过,尽可能让一个服务器完成相同的任务,而数据库的任务无非就是读取与写入,此时把读写分开,就称为读写分离架构。一个服务器负责写入数据库,另一个数据库负责读取数据,此时被写入的数据库还要实时进行数据同步,将数据传给被读的数据库。

对于多个数据库的情况,往往会选出一个头儿,称为主数据库,其余数据库称为从数据库,这种架构称为主从架构

  • 冷热分离架构

在这里插入图片描述

在实际上,数据库中的数据只少量被访问,计算机界常说二八原则,即20%的数据可以处理80%的访问量。那么就可以把这小部分数据拿到缓存中,以更快的速度访问到。

此时读取数据的逻辑就是,先读取缓存中的数据,如果缓存中有那么直接返回,如果缓存没有,再去数据库查找。而此处的缓存,就是Redis的应用场景之一。

  • 分库架构

在这里插入图片描述

当业务再庞大些,就可能出现一个数据库的表就存不下一张表了,此时就要对表进行再拆分,一个数据库只存一个表,根据具体的种类去查询某一个数据库。此处每个表都用一个数据库集群来存储,遵顼之前的主从,读写分离架构。

  • 微服务架构

在这里插入图片描述

当应用服务再复杂些,此时业务逻辑就很难维护,此时就可以把整个服务拆分为多个服务。每个服务只负责一个模块的业务开发,一个个小的服务称为微服务,一群微服务共同完成一个大服务,这种架构称为微服务架构


Redis特性

市面上有很多NoSQL类型的数据库,而Redis可以脱颖而出,这离不开它的很多特性。

  1. 速度快

Redis在内存中存储数据,访问效率非常高,官方给出的读写性能可以达到10 w/s。另外的,Redis使用单线程处理数据,避免了多线程的竞争问题。

  1. 使用非关系型数据库

Redis使用键值对来存储数据,这与常规的数据库不同,比如MySQL使用表来存储数据,这称为关系型数据库,而使用键值对的形式称为非关系型数据库

其内部提供了大量的数据结构,比如哈希,字符串,集合等等。

  1. 支持脚本

Redis支持使用编程语言Lua处理一些逻辑,甚至通过Lua自定义命令。

  1. 简单稳定

Redis的源码非常少,在3.0版本加入集群后,也就5w行,相比于其它数据库,这算很少的了。而且Redis的代码非常优雅,普通的开发人员也可以搞懂Redis的运行机制。

  1. 可拓展性高

如果不满足于Redis原生支持的几大数据类型,程序员甚至可以自己写一个数据结构在Redis使用。

  1. 持久化

Redis也不完全只能在内存中存储数据,也可以通过RDB或者AOF方式将数据存储到硬盘中。

如果计算机崩溃,此时内存的数据全都会丢失,这对Redis非常不利,因此会把数据放到硬盘中进行备份。


安装Redis

本博客以Redis 5为版本讲解,在Linux服务器上,一般直接下载就可以获取redis 5

  • Ubuntu
sudo apt install -y redis

安装完成后,服务会自动启动,此时通过netstat查看:

在这里插入图片描述

可以发现,Redis的默认IP是127.0.0.1:6379,也就是只能本地访问,所以还要修改一下配置文件,让其可以接收外部的网络请求。

Redis的配置文件在/etc/redis/redis.conf内,在文件中可以看到bindprotected-mode,如下:

bind 127.0.0.1 -::1
protected-mode yes

第二个参数是1保护模式,这个直接关掉就好。

修改IP地址:

bind 0.0.0.0 -::1
protected-mode no

最后重启服务:

service redis-server restart

此时可以通过redis-cli命令进入Redis客户端:

在这里插入图片描述

如果进入客户端后,输入ping返回一个PONG,那么就算安装成功了。


相关文章:

Redis:初识Redis

Redis:初识Redis Redis 介绍分布式架构Redis特性安装Redis Redis 介绍 在官网中,是如下介绍Redis的: in-memory data store used by millions of developers as a cache, vector database, document database, streaming engine, and messag…...

【React】增量传输与渲染

增量传输 增量传输是一种高效的文件传输方式,其核心原理在于只传输文件中发生变化的部分,而不是整个文件。以下是增量传输的详细解析: 定义与原理: 增量传输通过比对原始文件和目标文件,找出两者之间的差异部分&#…...

【回眸】Tessy 单元测试软件使用指南(四)常见报错及解决方案与批量初始化的经验

前言 分析时Tessy的报错 1.fatal error: Tricore/Compilers/Compilers.h: No such file or directory 2.error: #error "Compiler unsupported" 3.warning: invalid suffix on literal;C11 requires a space between literal and string macro 4.error: unknown…...

2024 - 10 :生物药学: 如何获取对应核心靶点基因的激酶

如何获取对应核心靶点基因的激酶 步骤 1:收集蛋白质信息 获取 UniProt ID: 对于每个基因,使用 UniProt 数据库获取其对应的蛋白质信息,包括 UniProt ID、序列和功能注释。UniProt 网站:https://www.uniprot.org/ 示…...

STM32 HAL库UART查询方式实例

本文中介绍USART编程涵盖了三种主要方法,详细介绍STM32F407微控制器结合HAL库,通过UART的查询方式来实现一个实用的密码验证程序。提示用户键入一个字符作为密码。只有当用户精准地输入字符6时,系统才会反馈“密码正确”的确认信息。反之&…...

数据结构--线性表双向链表的实现

目录 思路设计 总体思维导图 插入部分 头插法尾插法 任意位置插入 删除部分 头结点 尾节点 中间节点 只有头结点且删除的就是头结点 ​编辑 清空链表部分 遍历清空链表的所有节点 不遍历清空 各部分代码 Main部分 MyListedList部分 IndexOutOfException部分 …...

第一个Flutter应用(一)

1、创建项目 1.1 新建 1.2 选择Flutter SDK的位置 1.3 项目名称 英文单词加下划线起名规范,其他默认即可。 1.4 点击运行 发生报错显示我们的JAVA版本不符合 1.5 更改版本设置 1.6 再次启动项目 2、分析页面代码 以下是lib/main.dart的源代码(为了阅…...

批量查询快递单号物流信息:高效掌握最后更新动态

在电商和物流行业蓬勃发展的今天,快递单号的物流信息追踪显得尤为重要。对于商家和客户来说,了解包裹的最后更新物流状态是确保货物安全、及时送达的关键。本文将介绍如何批量查询快递单号的物流信息,帮助您高效掌握每个包裹的最新动态。 1运…...

随着硬件水平的提升,LabVIEW有哪些过去的编程方法被淘汰掉了

随着硬件水平的不断提升,尤其是处理器性能、存储能力、通信速度等方面的飞跃,LabVIEW的一些早期编程方法逐渐被更高效、现代的编程技术所取代。以下是一些随着硬件升级而逐步淘汰的LabVIEW编程方法和技术: 1. 低效的数据流传输方式 过去由于…...

Leetcode 206.反转链表

题目链接:206. 反转链表 - 力扣(LeetCode) 题目描述: 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1] 解题思路…...

基于springboot和vue.js 养老院管理系统设计与实现

博主介绍:专注于Java(springboot ssm springcloud等开发框架) vue .net php phython node.js uniapp小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆…...

高效数据处理:MapReduce与Hive的实战应用

文章目录 hive分析汇总互联网日志分析1.项目需求2.数据说明3.算法思路 用户电影推荐1.项目需求2.数据说明3.算法思路4.解题步骤 简单数据统计WordCount数据说明 疫情数据分析1.项目需求2.数据说明step1:创建ods层数据表step2:创建dwd层数据表step3:创建d…...

【含开题报告+文档+PPT+源码】基于springboot的迎新系统

开题报告 大学迎新系统是为了满足大学在新生入学时的信息化处理需求而开发的系统。在传统方式下,我们新生接待工作是需要新生报名表,就使得我们需要耗费大量的纸张,这将造成资源浪费。在接待新生的时候需要让新生勾选、填写大量的表格&#…...

C#-委托delegate

C#-委托delegate 通常情况下,函数内部需要调用其他函数来实现代码的重用,但这样有一个问题: 如果需要更换所调用的函数则需要对该函数的定义再次修改, 事实上,在程序运行过程中,函数也是作为一个存储在堆中…...

编译Thingsboard3.7.0的过程记录

1、首先去掉test测试&#xff0c;否则会有一堆问题&#xff0c;pom.xml修改如下&#xff1a; <plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>${surefire.version}</ve…...

vulnhub-THE PLANETS-EARTH靶机

下载并导入靶机至VMWare&#xff0c;设置网络模式为NAT&#xff0c;开机 开启攻击机&#xff08;kali&#xff09;&#xff0c;也设置为Nat模式&#xff0c;与靶机处于同一网段 扫描靶机ip Nmap 192.168.114.0/24 扫描网段内活跃的主机 可以推断靶机ip为192.168.114.129 扫描…...

【C语言】分支和循环(2)

&#x1f914;个人主页: 起名字真南 &#x1f619;个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 关系操作符2 条件操作符3 逻辑操作符 &#xff1a;|| &#xff0c;&& &#xff0c;&#xff01;3.1 逻辑取反运算符3.2 与运算符3.3 或运算符3.4 练习闰年判断3.5 短…...

Python数据分析-远程办公与心理健康分析

一、研究背景 随着信息技术的飞速发展和全球化的推进&#xff0c;远程工作&#xff08;Remote Work&#xff09;成为越来越多企业和员工的选择。尤其是在2020年新冠疫情&#xff08;COVID-19&#xff09;爆发后&#xff0c;全球范围内的封锁措施使得远程工作模式迅速普及。根据…...

LabVIEW提高开发效率技巧----使用动态事件

在LabVIEW开发过程中&#xff0c;用户交互行为可能是多样且不可预知的。为应对这些变化&#xff0c;使用动态事件是一种有效的策略。本文将从多个角度详细介绍动态事件的概念及其在LabVIEW开发中的应用技巧&#xff0c;并结合实际案例&#xff0c;说明如何通过动态事件提高程序…...

【STM32开发之寄存器版】(五)-窗口看门狗WWDG

一、前言 窗口看门狗简介&#xff1a; 窗口看门狗通常被用来监测&#xff0c;由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障。除非递减计数器的值在T6位变成0前被刷新&#xff0c;看门狗电路在达到预置的时间周期时&#xff0c;会产生一个M…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

Springboot社区养老保险系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;社区养老保险系统小程序被用户普遍使用&#xff0c;为方…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...