了解Redis,第一弹,什么是RedisRedis主要适用于分布式系统,用来用缓存,存储数据,在内存中存储那么为什么说是分布式呢?什么叫分布式什么是单机架构微服务架构微服务的本质

本文探讨了Redis作为分布式缓存系统的特点,强调其快速但容量有限,常与MySQL结合使用。文章分析了单机架构与分布式架构的区别,介绍了微服务架构的优势和挑战,以及如何解决会话一致性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

什么是Redis

Redis主要适用于分布式系统,用来用缓存,存储数据,在内存中存储

那么为什么说是分布式呢?

什么叫分布式

什么是单机架构

微服务架构

微服务的本质

引入微服务:解决了人的问题,但是有代价:

微服务的优势:

架构推进

应用(application)/系统(System):一个应用,就是一个组服务器程序

模块(Module)/组件(Component):一个应用,里面有多个功能,每个独立的功能,就可以称为一个模块/组件

可用性:系统整体可用的时间/总的时间 

响应时长:衡量服务器性能->(越小越好)

吞吐(Throughput)VS并发(concurrent):衡量系统处理请求的能力,衡量性能的一种方式​编辑

Redis的特性


什么是Redis

Redis主要适用于分布式系统,用来用缓存,存储数据,在内存中存储

那肯定也有人会好奇

内存那么大点地方,能存多少数据啊

这个就说到要点上来了,Redis的特性就是快,但是缺点也很明显他的存储量小,而我们的mysql,他的优点是什么呢?,存储量大,但是慢。

那么我们在生活中,往往会使用Redis和mysql结合去使用,为什么这么使用,因为我们生活中的“二八原则”,什么是二八原则呢?20%的数据,满足80%的需求

这么说就明白了,大部分人玩王者荣耀这游戏,都是用于去打排位,打匹配,获取段位信息这种,这就是20%,其他的80%是什么聊天记录,道具,亲密关系,老友回归这种。

那么这样还带来一个代价,就是系统的负责度就会大大提高,数据发生修改的时候,涉及到,Redis和MYSQL之间的数据同步问题。

那么为什么说是分布式呢?

因为,如果是单机程序,直接通过变量存储数据的方式是比Redis更优的选择。

因为进程具有隔离型,每个进程都是隔离开的,A无法访问进程的量

进程间通信:通过网络(Redis基于网络,可以把自己内存中的变量给别的进程,甚至别的主机的进程进行使用。

什么叫分布式

什么是单机架构

单机架构:只有一台服务器

硬件越来越牛掰。当然如果业务进一步要求提升,用户上升,此时就要分布式,引入更多硬件资源

一台主机的硬件资源有上限!,包括但是不限于

1.CPU

2.内存                                      服务器每收到一个请求,都是消耗上述的一些资源

3.硬盘

4.网络

如果同一时刻,请求多了,此时就可能导致某个硬件资源不够用,无论哪个方面出错了,都可能导致服务器处理请求的时间变长,甚至处理出错。

当然如果真遇到了服务器不够用的场景

1.开源 ->加更多硬件资源(一台机器扩张到极限了,软件商就要做出调整,不是粗暴的买机器,当然引入分布式,系统复杂度大大提高)

2.节流 ->软件上优化(需要通过性能测试,找到哪个环节出现瓶颈,再去对症下药

                                                 

用户请求,会先到达负载均衡器/网关服务器(单独的一个服务器)

负载均衡器,看是承担了所有的请求啊,那他能扛住吗?

他就像是做核酸,组织排队不是费时的,扣嗓子才费时间,分配任务是不耗费时间的,应用服务器承担的具体业务,执行的时间会更长。

增加应用服务器,确实能处理更多请求,但是存储服务器的承担请求也变多了,

相信到了这里,你已经知道,为啥要用redis的原因了,我们在采用redis作为缓存,这也会有下一个问题,应用程序修改存储服务器的时候,缓存服务器能不能修改成功呢?

引入分布式系统:不仅要面对更高的并发量,还要有更大的数据量

我们针对数据库进行进一步拆分的同时,我们也可以对表进行拆分

这也就需要引入微服务

微服务架构

一个服务器程序上,做了很多业务,导致这个服务器代码变的复杂,为了方便代码的维护,就可以把这样一个复杂服务器,拆分成更多功能单一的服务器

​​​​​​​

微服务的本质

当服务器复杂了,势必就要更多人来维护,当人多了,就要配套的管理,把这里的这些人组织好(防止他们摸鱼),每个组分别配备领导进行管理

引入微服务:解决了人的问题,但是有代价:

1.系统性能下降(要想保证性能不下降太多,还是引入机器,拆下更多的服务,多个功能之间更依赖网络通信,虽然这样代价更好,但是现代科技的万兆网卡,也是非常牛逼的)

2.系统复杂度高,可用性收到影响,服务器多了,遇到的问题更多(这也需要更多的手段,保证系统可用性,更丰富的监控报警,配套的运维人员)

微服务的优势:

1.解决人的问题

2.使用微服务,可以更方便功能的复用

3.可以给不同的服务进行不同的部署

架构推进

应用(application)/系统(System):一个应用,就是一个组服务器程序
模块(Module)/组件(Component):一个应用,里面有多个功能,每个独立的功能,就可以称为一个模块/组件

可用性:系统整体可用的时间/总的时间 
响应时长:衡量服务器性能->(越小越好)
吞吐(Throughput)VS并发(concurrent):衡量系统处理请求的能力,衡量性能的一种方式

Redis的特性

MYSQL主要通过表的方式来存储数据的"关系型数据库"

Redis主要是通过键值对方式来存储组织数据的"非关系型数据库"

快:

为什么Redis快

1.Redis数据在内存中就比访问硬盘的数据库要快很多,

2.Redis内部核心逻辑都很简单,数据结构,也是比较简单的操作内存的数据结构

3.从网络角度上,Redis采用了IO多路复用的方式(一个线程管理多个socket

4.Redis使用的单线程(虽然更高版本的Redis引入的多线程),这样的单线程,减少了不必要的竞争者(多线程提高效率的前提是,CPU密集型的任务,使用多个线程可以充分利用cpu多核资源)

5.使用c语言编写(不咋可信,因为mysql也是C编写的,没人问不说)

Redis核心任务:操作内存的数据结构,不吃很多cpu

什么时候用这个Redis

搜索引擎->广告搜索,把所有需要检索的数据都存在内存中,Redis存的是全量数据,这里的数据也不能随便丢。

Redis 可做缓存,数据库,消息队列。

这里的问题:由于负载均衡器随机分配应用服务器,把请求发送到一个应用服务器后,在这个服务器上产生会话,下次发送请求的时候,这个有可能分配到其他没有会话关系的数据。

解决:想办法让负载均衡,把同一个用户的请求始终打在同一个机器上(不是轮询,而是通过userId之类的方式来分配机器)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗哥不是甜妹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值