前言:
本人每天晚上/早上抽空学习一下Redis,更新可能会比较慢,但是会持续坚持下来,如果觉得还行,就点个关注,后续会继续更新Redis这个功能强大、好用、免费的软件~
下一篇会介绍Redis的特性、安装等。
一、认识Redis
Redis是一款开源、在内存中存储的被数以万计的开发者作为数据库、缓存、流引擎、消息中间者的软件(官网原话,但是自从官网更新了就没写了,现在Redis的官网主要突出就是一个Fast)。
由于Redis是在内存中存储数据的,因此它的速度肯定是比较快的,至少大于硬盘,即与之相比,MySQL的效率就远不及Redis了。
作为数据库:由于Redis的存储优势,因此他天生就比MySQL关系型数据库访问的速度要快很多。但也因为他的内存存储,也使得它无法存储大量的数据。
作为缓存:由于Redis是在内存中存储数据,而内存的特点就是快,因此可以用来作为缓存使用。
作为消息中间者:Redis的初心就是用来作为一个“消息中间件”的,但是由于还有其他更好用的消息队列(RocketMQ、RabbitMQ、Kafka),所以一般很少使用。
上述介绍了这么多,其实就是在讲,Redis因为自身的存储优势,就主打一个快~
Redis是一个C/S结构的程序,其他进程要想和Redis进行通信就得通过网络,这个效率远不及直接从内存中读取数据了,因此在单机程序中,若单单是为了追求效率,盲目使用Redis,反而会适得其反。
Redis真正的主要作战的领域是分布式~~
二、分布式系统
分布式听着很高大上,但是往往能不使用就不使用,因为比较复杂,需要根据业务场景来考虑是否要使用分布式。
为什么要引入分布式
传统的单机部署所面临的问题是,随着用户的增多,请求量增大,一台机器的性能(显卡、CPU、硬盘的性能)是有限的。
如果遇到这种问题往往是两种解决思路:
1)节流
节流指的是通过程序猿自己,去对程序优化,而这就非常考验程序猿的水平功底了
2)开源
开源指的是去升级主机的硬件设备,但是一台主机的性能也是有限的,就只能引入多台主机了。不过随着引入多台主机,程序系统的复杂度会大大增加,出BUG的概率也就会大大增加~~
分布式案例
当海量的用户请求去访问服务器的时候(分布式),通过负载均衡,来分配请求到主机节点上。
例如有1w个请求,主机有2台,每台主机的承受能力为5k请求,此时就可以通过负载均衡的方式,将1w个请求分到这2台主机上,以至于程序不会挂掉~~
当然我们也可以针对每台服务器的性能进行定制化,比如某一台机器的硬盘容量很大,就可以将这个主机用作是数据库服务器,对于其他也是同理,具体怎么处理还是需要根据业务需求的~
三、微服务架构
如果一个应用服务器的功能很多,就会非常重量,对于开发人员就会不好维护,为了解决这个问题,就可以将这个复杂的服务器拆分成更多的,功能单一的更小的服务器,这就是微服务了。
微服务的本质是解决代码维护,也就是“人”的问题。
引入了微服务虽然解决了人的代价,但是需要付出性能的代价(拆分出来多个服务,而每个服务之间是通过网络进行通信的),此外微服务还会提高系统的复杂度,会带来更多的问题,需要一系列手段来提高可用性~