📊 Redis

Table of Contents

你将学习如下内容

  • redis 基本操作
  • redis 底层实现

课程列表

  • redis 实现分布式锁

    在许多场景下,分布式锁是非常有用的原语,在这些场景下,不同的进程必须以互斥的方式使用共享的资源执行逻辑。 有许多库和博客文章描述了如何使用 Redis 实现 DLM(Distributed Lock Manager),但每个库都使用不同的方法,许多库使用简单的实现,和稍微复杂一点的设计相比,简答的实现的稳定性会更低点。 本问提供了一种更加规范算法,用 Redis 实现分布式锁。本文提出了一种名为 Redlock 的算法,它实现了一种我们认为比普通的单实例方法更安全的 DLM。 安全和可靠保证 我们将用三个属性来建模我们的设计,这是有效使用分布式锁所需的最低保证: 安全属性:互斥。在任何时刻,只有一个客户端可以持有锁。 可靠保证 1:无死锁。始终可以获取锁,即使锁定资源的客户端崩溃或被分离。 可靠保证 2:容错。只要大部分 Redis节点处于运行状态,客户端就能够获取和释放锁。 基于故障切换(failover-based)的实现存在的问题 使用 Redis 锁定资源的最简单方法是在实例中创建 key。key 通常是使用 Redis expires 功能在有限的生存时间内创建的,因此最终锁将被释放(满足列表中的可靠保证 2)。当客户端需要释放资源时,会删除 key。