# Redis 常用知识总结(一)

定义

  • Redis 是一个开源的、基于内存的数据结构存储器,可以用作数据库、缓存和消息中间件。
    在这里插入图片描述

C/S架构

在用redis的过程中,可以通过redis的命令行,或者是各种语言的Redis的API在代码里对Hash表进行操作,这些都是Redis客户端,而Hash表所在的是Redis的服务端,Redis是C/S架构。

Redis的Server是单线程服务器,基于Event-Loop模式来处理Client请求。使用单线程的好处有这些:

  • 不必考虑线程安全问题:好多操作都不必加锁,简化开发挺高性能。
  • 减少线程切换损耗的时间。

集群

当我们项目中Redis的客户端越来越多的时候,如图。
在这里插入图片描述
这样就会出现问题:

  • Redis内存不足:Redis的客户端越来越多,Redis的缓存数据越来越大。
  • Redis的吞吐量低:客户端变多了,但是Redis只有一台。

集群的思想就是多加几台Redis,客户端的请求通过负载均衡算法分散到各个Redis服务器上。通过集群的方式,实现增大缓存容量,提升吞吐量。
在这里插入图片描述

主从复制

简单的集群模式会出现下面的问题:

  • 数据不完整:如果其中一台Redis挂了,那么全部的缓存数据会丢失,导致访问数据库的压力增大。
  • 数据查询缓慢:某个时间段内某台Redis的访问量非常高,请求相同的数据。导致这个Redis机器非常忙碌。压力巨大。

要想解决可用性问题,可以使用Master-Slaver模式,于是给每一台Redis 加上一台Slaver:
在这里插入图片描述
通过Master-Slave模式,又实现了两个特性:

  • 数据高可用:Master负责接收客户端的写入请求,将数据写到Master后,同步给Slave,实现数据备份。一旦Master挂了,可以将Slave提拔为Master;
  • 提高查询效率:Master发现自己忙不过来的时候,可以把一些查询请求,转发给Slave去处理,也就是Master负责写,Slave负责读;

Redis数据结构

在这里插入图片描述

。。。未完待续!

猜你喜欢

转载自blog.csdn.net/qq_37248504/article/details/111500450