Redis简介:5分钟速成课程

发表时间: 2021-12-15 21:13

定义

Redis 是一种快速、开源、内存中的键值数据结构存储

REDIS 允许您在 RAM 上存储键值对,由于访问 RAM 比访问磁盘快 150,000 倍,比访问 SSD 快 500 倍,这意味着速度。

但是,我们已经在大部分操作中使用 RAM!

但是当涉及缓存或数据库交互时,我们默认使用磁盘,想象一下访问数据库以读取 10,000 条记录,如果数据存储在磁盘上,平均需要 30 秒,而从 RAM 读取大约需要 0.0002 秒。

这意味着它是一个超快的读/写系统,但由于它存储在 RAM 中,因此它是易失性的。

那么,我们会丢失数据吗?

为了防止发生数据丢失,有一个内置的持久性模块,它会在给定的情况下将内存状态写入磁盘上的转储文件,转储文件在系统启动时加载,一旦启动并运行,数据就可用于操作,所以,没有数据丢失。

我们可以在多个实例中使用不同的配置,以允许我们通过所谓的哨兵和主从架构保持持续的正常运行时间。

Redis 是Remote Dictionary Server的首字母缩写词。

换句话说,它是一种工具,可让您在 RAM 上存储数据库。

何时何地使用 Redis?

由于 Redis 速度快如闪电,因此主要用于缓存目的,它是 Redis 最闪耀的地方,因为它提供了可以通过字典结构存储的各种类型。

我们可以使用 Redis 缓存具有高流量和静态内容的完整页面,如果页面本身容易发生变化或者内容是动态生成的,那么无论如何都不应该缓存它,无论我们使用的是 Redis 还是 Memcached。如果页面主要包含静态内容或者每 x 时间刷新一次内容,那么我们可以缓存该页面并立即提供它!

在何处使用 Redis 的第一要务是整页缓存(FPC)。

它可以用来做的另一件事是存储会话,与没有任何持久性的 Memcached 不同,Redis 有它并且允许会话存储,使用 Redis 处理会话可在与站点交互时提升用户体验

持久性对于存储会话很重要,以避免在用户交互的关键部分丢失数据,例如,处理付款、将商品添加到购物车或作为经过身份验证的用户请求任何操作。

第二个是会话缓存

Redis 作为一个进程运行,与 MySQL、PHP、Apache 和所有其他服务的运行方式相同,它使用大量 RAM 内存,如果服务器需要更多空间来进行繁重的提升,那么它可能会选择杀死 Redis 的进程,在这种情况下,我们会遇到服务停机并可能丢失数据,为了防止这种情况发生,Redis 内置了 Master-Slave 架构。

这种架构允许我们有额外的进程来监控我们的主要进程,从进程模仿它的命令,偶尔会复制主转储文件,以保持进程之间的一致性。这些监控进程被称为 Slaves,而主要的是 Master。

当主进程被杀死时,其中一个从属进程成为主进程并在主进程重新启动时处理所有请求,一旦 Master 再次启动,它会从 Temporary Master 获取转储文件并将其用作基础,主进程重新实例化为主进程,而临时主进程再次变回从进程。

但是我们怎么知道主进程什么时候宕机了呢?我们怎么知道哪个 Slave 应该成为 master?

Sentinel 是具有检查 Redis 实例是否正常工作的特定职责的进程,他们负责:

  • 检测Master是否宕机;
  • 选择谁是临时主人;
  • 监控 Master 何时返回并告诉它要加载哪个转储文件。

哨兵,我猜这个名字说明了一切。

一般设置通常使用一个 Master、两个 Slave 和三个 Sentinel。

Redis 有一个很好的社区和写得很好的文档,如果你想尝试一下,你会在他们的官方网站上找到很多支持。

Redis官网:

https://redis.io/