当前位置:   article > 正文

Redis初识

Redis初识


前言:可能大家在没了解Redis之前,大概率是听说过mysql的,我们知道mysql是一个关系型数据库,使用结构查询语言管理数据库,mysql的特性也就是其事物的四个特性:持久性,原子性,隔离性,一致性。而Redis与mysql不同,他是一个内存级别的非关系性数据库,Redis有什么过人之处呢?现在就让我们来认识一下:

初识Redis

Redis是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中介
Redis支持多种类型的数据结构,如字符串、哈希、列表、集合、有序集合等,并提供了丰富的操作命令来处理这些数据。
由于其基于内存的特性,Redis具有极高的读写性能,适用于需要快速响应高并发的场景。
此外,Redis还支持数据持久化主从复制、分布式处理等功能,以确保数据的可靠性和可扩展性。
Redis是将自己内存的数据基于网络,支持多个进程,甚至不同主机间的进程的数据通信,适用于分布式系统。

相对于mysql:Redis访问数据的速度更快,直接向内存访问,而不是磁盘。 但由于内存是有限的,因此Redis存储的数据是有限的。
由于内存特性,Redis还会经常用作为缓存存储数据,例如将mysql与Redis结合使用,按照二八原则,将Redis作为缓存,mysql作为主存存储数据,实现一个又大又快的数据存储。
Redis最初是为了做一个消息中间件(消息队列),分布式下的生产消费模型。

综上,Redis的主要适用场景就是分布式系统,那什么是分布式系统呢》

什么是分布式系统

为了明确分布式系统,我们先来了解单机架构,那么什么是单机架构呢?
所谓的单机架构,即只有一台服务器,这个服务器负责所有的工作。在这里插入图片描述
如上图一个简单的电商网站的组成,有一个单机服务器完成所有功能,单机服务器主要用有两个服务一个是应用服务(服务端程序),一个是数据库服务(数据存储)。此时一台主机能满足业务需求,这就是单价架构。
但是我们一台主机上的硬件资源是有限的,当同一时刻处理的请求多了,就可能会导致某个硬件资源不够用了,从而导致访问时间变长,甚至出错,一般遇到这种场景我们会进行优化:开源节流,软件上的优化。但仅此资源还是不够,于是不得已引入多台主机,而这样多台主机共组构成的一个服务系统,就是分布式系统了。这是一种无奈之举。
但这样系统的复杂性就会提高,出现bug的概率也会比较高。

负载均衡的更新

在这里插入图片描述

改进之后,引入多个应用服务器应对请求过多的情况,先访问负载均衡器上(一个网关),在让负载均衡器进行请求的分发。
那负载均衡器请求超了
负载均衡器也是一个服务器,再分发请求前,他会承担上万个更多的请求,它是如何承担的呢?事实上,负载均衡的承担量是远远高于应用服务器的,不过应用服务器失去执行的请求的,而负载均衡仅仅识分配任务,所以承担量更多,那如果请求量足够大呢?那我们会引入多个负载均衡器(引入多个机房)。
与此同时存储服务器的承担量也更多了,处理方法开源节流,开源门槛高,节流我们在引入新的的数据库服务器。
在这里插入图片描述
此时数据库服务分为两种,主数据库服务(master)与从数据库服务(slave),两个数据库服务器数据同步,master负责写,写的次数相对较少点,更多的是读,因此slave负责读—一主多从。
在这里插入图片描述
由于数据库响应慢,因此又添加了一个缓存服务器,这里会放一些热点数据(经常读写数据),遵循二八原则:20%的数据能够支持访问80%的请求。通过这种方式,能够大大提升访问速率。
此时这里的缓存服务器就也可以用Redis,快但是小。只有当缓存服务器中找不到,此时再去别的存储服务器。但在修改时,需要进行数据同步的实现。

其他:引入分布式系统,不仅去解决高并发请求问题,还要处理数量足够大。因为存在一台服务器可能存不下数据,因此会引入多台服务器,并对数据库进行拆分(分库,分表),这会根据具体的业务场景。
在这里插入图片描述

业务拆分–微服务

在实际业务需求中,我们的业务是非常复杂的,上图我们直接就用应用服务器表示我们处理业务请求,但其实,我们还可以对应用服务器在进行拆分,拆分成更加细致的应用服务(功能更单一,体量更小),因此我们会使用微服务架构进行业务拆分,使用一个微服务器完成业务中的某个功能。在这里插入图片描述
之前我们使用一个大的服务器处理整个业务,这样太复杂了,而微服务就是将业务细化,使用一个根据业务大小类型的微服务器来处理这业务中的一个具体功能,因此服务器的种类和数量增加了,需要更多人手来维护,不过业务处理更加方便细致了。
但是引入微服务还是会有缺点的:
1.性能下降–查出更多的服务,多个功能相互依赖,进行网络通信可能速度比硬盘还要慢。虽然现在有了万兆网卡,读写速度比硬盘快很多,但是贵,需要配备对应的万兆交换机,路由器,网线等。
2.系统复杂性提高,可用性降低。
综上,我们对分布式系统做一下小结:❤️

1.区别于单机架构,分布式系统具有更多的主机/服务。
2.数据库与应用分离,应用程序与数据库程序在不同的主机上部署。
3.引入负载均衡-》应用服务器集群,通过负载均衡器将大量请求均匀的分发给应用服务器
4.引入读写分离,数据库主从结构,一个用做主,其他都是从,master用来写,slave用来读。
5.引入缓存数据库,对冷热数据分离,使用二八原则。
6.引入数据库分库分表,扩展存储空间----------------以上是针对大量数据以及请求
7.为了应对复杂业务,使用微服务进行业务拆分。

在这里,redis在这里的用途主要是用作缓存。

关于Redis的特性

关于Redis我们可以上官网的介绍去了解一下它:首先Redis是一个在内存中存储数据的中间件,我们可以用它作为数据库,缓存,消息队列等,对于数据库来说,他是一个非关系型数据库,存储的数据为键值对,它的key都是string,val可以是hash,list,set,string等。

Redis的操作:Redis可以通过命令行的方式进行数据操作,也可以通过脚本(lua)进行批量操作并且可附带一些逻辑性。
Redis的扩展:除此之外,Redis也支持在原有基础上进行功能扩展,提供了一批API,通过c/c++,Rust进行调用扩展(编写动态链接库)。
Redis的持久化:因为是作为内存存储的数据,为了保证数据的持久性,Redis会将苏剧存两份,硬盘与内存都存,在开始加载时,将数据加载到内存,对于数据操作,就在内存中,增删查改会在内存释放时写回磁盘中。

Redis支持分布式系统的集群:即水平扩展,类似于数据库分库分表,由于一个主机的内存是有限的,因此我们可以引入多个Redis,每个存一份。
高可用性:所谓的高可用性即冗余/备份,Redis也支持主从结构,从节点伟主节点的备份。

Redis能在这么多数据库中占有一席之地,这是因为他快!!1.能存中访问数据。2.处理的业务逻辑简单。3,使用了IO多路复用的方式处理请求(epoll)4.使用的单线程模型,提高效率(Redis不太吃cpu)。
Redus的用途?:1.用作数据库2.例如用在负载均衡下的系统中,用来存储sessionid信息的缓存数据,通过这种方式即使应用服务器重启,会话都不会丢失。3.用作消息队列,一个服务器(生产消费模型)。在这里插入图片描述
凡事都有两面性,有以上能做的,当然也有不能做的,对于存储大量数据来说,Redis是不太适合的。

Redis的安装

首先就是版本选择,对于我们初学者来说,Redis5就够用了,且企业一般也会选择版本5,而Redis7安装会比较麻烦一点,两者用法差别不大。
其次Redis的安装是不支持windows系统的,不过微软维护了一个window的Redis,对于我们来说,就用Linux就行,Linux系统可以使用虚拟机,也可以购买云服务器,都是可以的,不过前者稍微有点麻烦,但问题都不大,当然后面我们也可以使用docker进行安装。下面我们对centos与ubuntu两个发行版本上介绍一下如何安装。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/848303
推荐阅读
相关标签