【redis】初始redis和分布式系统的基本知识

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱
ʕ̯•͡˔•̯᷅ʔ大家好,我是xiaoxie.希望你看完之后,有不足之处请多多谅解,让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客
本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如需转载还请通知˶⍤⃝˶​
个人主页:xiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客

系列专栏:​ xiaoxie的redis学习系列专栏——CSDN博客●'ᴗ'σσணღ ​
我的目标:"团团等我💪( ◡̀_◡́ ҂)" 

( ⸝⸝⸝›ᴥ‹⸝⸝⸝ )欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​+关注(互三必回)!

一.初谈redis

1.什么是redis

 redis是一个开源的,基于内存存储的数据结构服务器,起初 redis 的初心是作为一个"消息中间件"(消息队列)而被创建的,但由于市场上的像 KafkaRabbitMQ 等专业消息中间件在处理在处理大规模消息传递、消息顺序保证、以及容错能力方面表现得更为出色,redis 又因为其基于内存存储的特点,而被做为 分布式系统下的缓存服务器来被广泛使用.

2.为什么要在分布式系统下使用redis

无论是在单机环境还是分布式系统中,Redis都可以作为一个强大的缓存解决方案,提高系统的性能和可扩展性。在分布式系统中,Redis的功能特性可以得到更充分的发挥,但在单机环境下,Redis作为缓存也可以带来显著的性能提升.在学习redis之前还是有必要了解一下关于分布式系统的知识.

二.分布式系统

1.名词解释

在了解分布式系统,首先我们应该先了解关于分布式系统的名词

1.应用 / 系统

一个应用/系统 就是一个 / 组 服务器程序

2.模块 / 组件

一个应用,有很多功能,而每个独立的功能,就可以称为一个模块 / 组件

3.分布式

引入多个主机 / 服务器 协同配合完成一系列的工作,就是物理意义上的多个主机.

4.集群

引入多个主机 / 服务器 协同配合完成一系列的工作,但这个是逻辑上的多主机,你可在一台主机上,部署多个服务器,它们协同工作,如果工作量太大,也可以扩展成多个主机上的多个服务器.所以称为逻辑上的多主机集群中的“主机”或“服务器”可以是物理服务器,也可以是在同一台物理主机上运行的多个虚拟服务器或容器.

5.主 / 从

这是分布式系统中比较常见的架构

就是在多台服务器节点中,有一台主节点,另外的节点都为从节点, 并且从节点的数据都是由主节点的数据同步而来的.

6.中间件

位于客户端与服务器之间的软件层,它在分布式系统中起到至关重要的作用。中间件提供了一种机制,用于在不同的应用程序之间进行通信和数据管理,从而简化了复杂系统的开发、维护和集成,例如:

1.数据库

2.缓存

3.消息队列

4....

7.可用性

系统正常运行的时间 / 总的时间 * 100%

例如一个服务器可用的时间为360天,那么它的可用性就为

360 / 365 * 100%

高可用性是许多关键系统所追求的目标,特别是在需要7×24小时不间断服务的场景中,比如金融服务、在线购物平台、云计算服务等

8.响应时长

可以从字面意义上理解,就是户端发送请求到服务器处理完该请求并发送响应回客户端所经历的时间。这个时间包括了网络传输时间、服务器处理时间以及可能的其他延迟,它是衡量一个一个服务器性能的重要指标

9.吞吐 vs 并发

1.吞吐量通常指系统在单位时间内能处理的事务数量或完成的工作量。它反映了系统的处理能力,可以是每秒处理的请求数、每秒传输的数据量或在一定时间内完成的任务数

2.并发性描述了系统能够同时处理多少个操作或请求。高并发性意味着系统可以同时处理来自多个用户的请求,而不会导致明显的性能下降

这两个是衡量系统的处理请求能力,衡量系统能力的重要指标

2.单机框架

单机框架就是只有一台服务器,负责处理所有的工作

现在其实许多的互联网产品其实就是单机框架,因为现在的硬件的发展非常快,哪怕只是一台主机,它的并发量和储存空间都是非常大的,所以其实在中小厂中,单机框架比较常见的,毕竟访问量并没有那么高,而且,单机框架的结构并没有那么复杂,也比较便于管理,单机框架就已经够用了.

3.应用服务和数据库服务分离

 虽然说现在的硬件发展的非常快速,但是随着用户访问量增加,仅仅依赖一台主机还是不够的,比较主机上的资源是有限的,所以我们需要引入多台主机了(引入多台主机后就可以称之为分布式系统了),例如把上文的单机框架的应用服务和数据库服务分别部署到不同的主机上

并且我们还可以根据不同的主机上提供的不同服务,采用不同的配置比如

1.应用服务器里面会包含很多的业务逻辑,所以更看重的是 CPU 的性能 和 内存的大小.

2.存储服务器呢因为要存储大量的数据,所以就更看重硬盘的大小.

4.引用更多的应用服务器节点

随着用户的进一步增加,一台应用服务可能也不一定够用,这个时候我们就要进一步的引用更多的应用服务器节点.同时,我们还需要引入一个负载均衡服务器,使用相应的算法合理的分配,用户的请求到各个服务器中,防止出现分配不合理的情况

需要注意的一点是这个负载均衡服务器的算法,是需要根据具体的业务的去具体设计的.同时我上图只是就画了两个服务器,不代表只能增加一个服务器. 并且可能不仅仅只需要一个负载均衡器.

5.读写分离存储服务器

随着应用服务器的增加,同时数据也会大量的增加,这个时候可能一台存储服务器并不能满足业务的需求这个时候,就可以引入更多的存储服务器,把其中一台服务器作为写服务器 以及主服务器,把其他的服务器作为读服务器以及从服务器,因为一般来说在业务场景中,读的频率远高于写的频率

 注意的地方,只能有一台写服务器,但可以有多台读服务器,并且,主服务器的数据还会同步给读服务器.

6.将存储服务器分为"冷热区"

虽然说数据库很好用,但是数据库有一个很致命的缺点那就是慢,这个时候我们就可以引入我们这个话题的主角了也就是 redis 使用它来解决这个问题,它是基于内存存储的,虽然存储空间不大,但它快,在加上二八原则也就是 20 % 的数据 就能够解决80%的访问,甚至 是 10% 和 90% 基于这两点,我们就可以引入 redis 也就是缓存服务器,把热点信息存储到该服务器中,这样就可以大大的提高访问速度了,并且读服务器还是存储着全部数据

 同时,redis虽然是基于内存存储的,但是它会在硬盘上备份一份数据,所以不用担心数据可能是易失性的.

7.分表分区数据库

虽然说我们已经对存储服务器引入多个服务器,但还是有可能出现,一个服务器的数据库可能会存储几十G甚至上百G的数据(短视频),这个时候我们就应该引入更多的主机,并对数据库进行分表分区操作了.使用多个数据库服务器存储原本数据库的一部分数据

其中如果某张表太大了一个主机装不下,也可以对一张表进行拆分,具体如何操作还是要根据实际业务来调整.

8.微服务架构

随着主机的增加,特别是随着应用服务器的增多,一个应用服务器的逻辑代码就十分复杂了,增加更多的应用服务器之后代码就更复杂了,这个时候为了更好的维护我们的代码我们就可以把一个复杂的应用服务器,拆分成一个一个,功能单一,更小的服务器(微服务)每个服务实现特定的业务功能,并且可以独立部署、升级和扩展

以上就是关于分布式系统的简单介绍 

三.再谈redis

从上文中我们可以得知redis,是一个基于内存存储的信息中间件,可以作为数据库,可以作为缓存,特别是可以在分布式系统中发挥出它的作用

1.redis的特性

1.基于内存

redis是基于内存存储数据的,也正是由于这个特性,使得它有非常高的读写性能,使得它非常适合作为缓存来使用,不需要存储大量的数据,只需存储热点数据即可

 2.支持多种数据结构

Redis支持字符串、哈希、列表、集合、有序集合等多种数据结构,便于处理复杂的数据缓存需求

3.持久化

redis虽然是基于内存存储数据的,但是它支持RDB(快照)和AOF(追加文件)两种持久化方式将数据存储在硬盘上,确保即使在服务器重启后,数据也能恢复,增强了数据的安全性 

4.高并发高可用性

Redis使用单线程的事件驱动模型,通过非阻塞I/O和事件多路复用机制来处理高并发的请求结合Redis Sentinel,Redis可以构建高可用的系统,实现故障自动转移

 5.灵活的缓存策略

Redis支持LRU(最近最少使用)等淘汰策略,以及设置键的过期时间,自动删除过期数据,帮助管理内存并确保缓存中的数据是最常访问或最新的

6.分布式部署

redis Cluster支持数据的自动分区和故障转移,能够构建大规模、高可用的缓存集群,适合处理大量并发请求和大数据量场景

7.丰富的特性,支持多种语言

Redis提供了多种语言的API,使得开发者可以在多种语言的环境下使用redis.Redis还支持如LRU淘汰、事务实现、数据淘汰机制、Pipelining、Lua脚本执行等高级特性

 2.应用场景

Redis是一种高性能的键值存储数据库,它被广泛用于多种应用场景,以下是一些常见的使用案例:

  1. 缓存:由于其出色的读写性能,Redis常被用作缓存数据库,减少对主数据库的访问,提高数据读取速度。

  2. 会话存储:在分布式系统中,Redis可以用来存储用户会话,实现会话共享。

  3. 消息队列:利用Redis的List或Stream数据结构,可以构建消息队列,适用于实现任务队列和消息传递。

  4. 排行榜:Zset(有序集合)数据结构适合用来构建各种排行榜,如游戏得分、产品销量等。

  5. 分布式锁:利用Redis的原子命令和键过期功能,可以实现分布式锁,避免多进程或多线程间的竞态条件。

  6. 计数器:Redis的原子递增和递减操作使其成为实现计数器的理想选择,如统计访问次数、点赞数等。

  7. 实时分析:Redis的高速特性适合进行实时数据分析,如用户行为分析。

  8. 全页缓存(FPC):可以使用Redis缓存整个网页的内容,减少服务器的负载。

  9. 数据共享:在微服务架构中,Redis可以作为不同服务间共享数据的介质。

  10. 限流:通过设置过期时间和限制请求频率,Redis可以用于实现访问限流功能。

  11. 购物车:Hash数据结构可以用来存储和管理用户的购物车信息。

  12. 社交网络:Redis的Set数据结构适合存储用户的好友列表,并进行社交网络分析。

  13. 位图:可以用于存储用户签到信息、用户在线状态等。

  14. HyperLogLog:适合用来做基数统计,如独立访客数量的统计。

  15. GEO:用于存储地理位置信息,进行地理距离计算和范围查询。

  16. Stream:用于构建高吞吐的消息队列,支持消费组和消息持久化。

  17. 慢查询日志:Redis的Slow Log功能可以记录执行时间较长的命令,有助于性能调优。

  18. 分布式系统Session管理:在分布式系统中,使用Redis可以避免Session跨服务器共享的问题。

  19. 秒杀系统:在高并发场景下,Redis可以作为秒杀系统的核心,处理库存扣减和订单生成

3.在Centos上安装redis

1.添加Redis软件仓库(可选):

使用EPEL(Extra Packages for Enterprise Linux)仓库和Redis的官方仓库可以简化安装过程。首先,你需要安装EPEL仓库:

sudo yum install epel-release

然后,你可以添加Redis仓库

sudo wget https://packages.redis.io/rpm/redis-stable/redis-stable.repo -O /etc/yum.repos.d/redis-stable.repo

2.安装Redis: 

通过yum安装Redis

sudo yum install redis

这将安装Redis服务器和客户端 

3.启动Redis服务

安装完成后,你可以启动Redis服务: 

sudo systemctl start redis

如果想要Redis在系统启动时自动启动,可以使用以下命令: 

sudo systemctl enable redis

4.检查Redis服务状态

检查Redis服务是否正在运行: 

sudo systemctl status redis

 5.配置Redis(可选):

Redis的配置文件位于/etc/redis.conf。你可以编辑此文件以调整配置,例如打开远程访问:

sudo vim /etc/redis.conf

取消注释并修改以下行(如果需要允许远程访问):

protected-mode no

修改配置后,重启Redis服务以应用更改: 

sudo systemctl restart redis

6.安全设置(强烈推荐) 

如果你打算将Redis暴露在公网上,强烈建议设置密码:

requirepass yourpassword

记得将yourpassword替换为一个安全的密码。 

7.测试Redis: 

你可以使用Redis的命令行工具测试安装是否成功:

redis-cli

然后,尝试设置和获取一个键值对: 

set mykey "Hello"
get mykey

如果一切正常,你应该能看到输出:"Hello"。 

8.防火墙设置(如果需要):

如果服务器运行的是防火墙,确保开放6379端口(Redis的默认端口) 

sudo firewall-cmd --add-port=6379/tcp --permanent
sudo firewall-cmd --reload

请注意,Redis默认配置为在保护模式下运行,这意味着它只允许本地回环接口上的连接。如果你需要远程访问Redis,需要按照步骤5进行配置。

另外,如果你的CentOS版本较新,可能会使用dnf而不是yum作为包管理器,相应的安装命令需要替换为sudo dnf install redis

 以上就是关于redis和分布式系统的基本认识了,如果你对redis感兴趣的话,可以点上个关注,博主后续会更新更多的关于redis的内容,有什么需要交流讨论的地方,也可以加文末微信,感谢你的阅读,祝你一天愉快.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iOS ------ Method Swizzling (动态方法交换)

一,Method Swizzling 简介 Method(方法)对应的是objc_method结构体;而objc_method结构体中包含了SEL method_name(方法名),IMP method_imp(方法实现) // objc_method 结构体 typed…

Hadoop概述

大数据处理技术 对大数据技术的基本概念进行简单介绍,包括分布式计算、服务器集群和 Google 的 3 个大数据技术。 分布式计算 对于如何处理大数据,计算机科学界有两大方向。 第一个方向是集中式计算,就是通过不断增加处理器的数量来增强单…

开源项目介绍-01:AAMED-master 圆和椭圆检测

前言: AAMED: Arc Adjacency Matrix based Fast Ellipse Detection :基于弧邻接矩阵的快速椭圆检测 1 下载 GitHub - Li-Zhaoxi/AAMED: Arc Adjacency Matrix based Fast Ellipse Detection 开源项目,支持windows 和 Linux的,然后,有C++,Python,Matlab的几个版本。 Git…

SQL底层执行过程

MySQL 的查询流程 客户端请求连接器 负责与客户端的通信,是半双工模式(半双工(Half Duplex)数据传输指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。),验证请求用户的账户和密码是否正确,③如果用户的账户和密码验…

模型量化与量化在LLM中的应用 | 得物技术

一、模型推理优化 随着模型在各种场景中的落地实践,模型的推理加速早已成为AI工程化的重要内容。而近年基于Transformer架构的大模型继而成为主流,在各项任务中取得SoTA成绩,它们在训练和推理中的昂贵成本使得其在合理的成本下的部署实践显得…

Git 如何修改已经推送的错误提交信息(有图有真相)

解决方案一:修改最新的提交信息 首先,我们来考虑最简单的情况:如果你在最近一次提交时输入了错误的提交信息,并且还没有进行下一次提交,那么你可以使用如下命令来修改最新的提交信息: $ git commit --ame…

VSCode SSH连接远程主机失败,显示Server status check failed - waiting and retrying

vscode ssh连接远程主机突然连接不上了,终端中显示:Server status check failed - waiting and retrying 但是我用Xshell都可以连接成功,所以不是远程主机的问题,问题出在本地vscode; 现象一: 不停地输入…

CPU架构

一、CPU组成 CPU内部由ALU(算术逻辑单元)、CU(控制器)、寄存器(PC、IR、PSW、DR、通用寄存器等)、中断系统组成,外部通过总线与控制总线、数据总线、地址总线进行相连,对数据和程序…

【保姆级讲解如何安装与配置Xcode】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

第十二章 案例二:配置Trunk,实现相同VLAN的跨交换机通信

1、实验环境 公司的员工人数已达到 100 人,其网络设备如图12.13所示,现在的网络环境导致广播较多网速慢,并且也不安全,公司希望按照部门划分网络,并且能够保证一定的网络安全性 图12.13 实验案例二拓扑图 其网络规划…

环境安装:python环境迁移(无网和有网)

前言 环境部署或迁移是一项简单而又考验应对能力的一项工作,需要考虑到网络环境的情况,无网环境下需要采取离线方式进行操作,有网环境则可以直接通过在线安装完成。 在进行Python环境迁移时,需要注意保持环境的一致性,…

Notion是什么,Notion软件下载,Notion官方网站在哪里?国内用户Notion怎么订阅升级会员?

Notion是什么 Notion,一款强大的多功能工具,可用于组织笔记、任务、项目、数据库和文档等。 Notion软件下载 这个到Notion官方网站下载就可以了。 怎么订阅Notion会员 注册好了Notion的账号,来到首页,点击设置,左边…

LED显示屏黑屏的常见原因及解决办法

LED显示屏在使用过程中偶尔会出现黑屏现象,可能由多种原因引起。以下是LED显示屏出现黑屏的主要情况及相应的解决办法: 1. 上电的瞬间就是黑的 原因:可能是因为上电过程中出现了一些异常情况,导致屏幕无法正常显示。 解决办法&…

如何保证Redis双写一致性?

目录 数据不一致问题 数据库和缓存不一致解决方案 1. 先更新缓存,再更新数据 该方案数据不一致的原因 2. 先更新数据库,再更新缓存 3. 先删除缓存,再更新数据库 延时双删 4. 先更新数据库,再删除缓存 该方案数据不一致的…

新手如何用Postman做接口自动化测试?

1、什么是自动化测试 把人对软件的测试行为转化为由机器执行测试行为的一种实践。 例如GUI自动化测试,模拟人去操作软件界面,把人从简单重复的劳动中解放出来,本质是用代码去测试另一段代码,属于一种软件开发工作,已…

洗地机哪个牌子质量最好?四款年度口碑品牌盘点

在当今家庭生活中,洗地机技术的飞速发展给我们的日常带来了极大的便利。洗地机作为智能家居领域的佼佼者,其实用性和智能化程度受到越来越多消费者的欢迎。许多人在选洗地机时会纠结一个问题:洗地机哪个牌子质量最好? 洗地机怎么…

# 谷歌 Chrome 浏览器无法安装插件的解决方法

谷歌 Chrome 浏览器无法安装插件的解决方法 运用开发模式安装 安装步骤: 1、 将 XX.crx 插件的扩展名改成 .zip 或者 .rar 并解压到文件夹 XX 目录。 1)如:下载的 前端框架 vue.js 插件 nhdogjmejiglipccpnnnanhbledajbpd-6.6.1-Crx4Chro…

【AGX】Ubuntu20.04 + ROS_ noetic+ 大疆Mid360激光 雷达评测

大家好,我是虎哥,最近组装机器人,使用到了大疆孵化的圳市览沃科技有限公司(简称Livox览沃科技)推出的觅道系列全新混合固态激光雷达Mid-360,顺便试试效果,也记录一下使用入门过程。 "觅道M…

自然语言处理 (NLP) 和文本分析

自然语言处理 (NLP) 和文本分析:NLP 在很多领域都有着广泛的应用,如智能助手、语言翻译、舆情分析等。热门问题包括情感分析、命名实体识别、文本生成等。 让我们一起来详细举例子的分析讲解一下自然语言处理(NLP)和文本分析的应用…

基于java+springboot+vue实现的新闻资讯系统(文末源码+Lw)216

摘 要 传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,文章信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广…
最新文章