Redis初步介绍和分布式系统介绍
一、Redis 初步介绍
Redis 是在内存中存储数据,所以最大的特点就是快。
而且可以通过网络进行数据的存储与共享,所以适用于分布式系统,一般作为其中的缓存。
但是缺点是由于数据存储在内存,所以存储数据量小。那么改进的方法在分布式系统中也会有所体现(Redis 存储热点数据,MySQL 存储全量数据,此时的问题就是二者的数据同步问题)
二、分布式系统介绍
通过实际项目的普遍优化流程来介绍。
1、单机架构:应用程序 + 数据库
一开始由于访问量不多,一台服务器的硬件资源足够支撑,所以就是单机架构。
2、分布式架构:应用服务器 + 存储服务器
但是由于一台主机的硬件资源是有限的,所以当用户量和数据量高起来之后可以把应用与存储分离,引入多台主机,协作完成业务。
3、引入负载均衡器
但是请求越来越多,需要的应用服务器越来越多,这是就要引入负载均衡器来分配每个应用服务器需要处理的请求。
4、读写分离
但是同时数据库需要进行的操作也变多了,此时引入主从数据库,即读写分离,一主多从的方式优化性能(主用于写,从用于读,主同步数据给从)
5、引入缓存
由于数据库是读硬盘,速度慢,所以引入缓存存放热点数据,提高读写速度。
但是要解决缓存与数据库之间数据一致性。
6、数据库分库分表
由于存储的数据过多导致一台主机存不下一个数据库里面所有的数据,这时可以分库。
7、微服务
当业务类型越来越多的时候,每一个应用服务器的代码量增加,因为此时每一个应用服务器都是一个具有完整业务功能的服务器,但是如果按照业务类型进行拆分的话就能得到微服务架构。
微服务的代价:
结构复杂,维护成本高,容易出错。
系统性能下降,服务之间更加依赖网络通信。
微服务解决了人的管理问题,分组进行维护特定的功能,实现了功能的复用。
三、Redis 特性
1、数据结构化存储
内部通过键值对的方式存储数据,是非关系型数据库。
2、可编程
支持通过命令,脚本的方式执行 Redis 操作。
3、可扩展
可以用 C/C++,Rust 的语言打成动态库,使 Redis 支持更多数据结构或命令。
4、持久化
虽然数据存储在内存,但是硬盘会进行备份,当进程中断或重启时,数据能从硬盘中加载出来。
5、可集群
可以水平扩展(类似分库分表)引入多个主机,部署多个 Redis 节点即可使用,缓存集群。
6、高可用
支持主从同步。
7、快
存储在内存。
核心操作逻辑简单,只是对数据结构进行操作。
利用 IO 多路复用。
单线程。
四、Redis 应用场景
1、作为数据库,此时存储全量数据。
2、作为缓存或者 session 存储,此时存储部分数据。
3、作为消息队列,实现网络生产者消费者模型。