首页 > 数据库 >Redis-分布式锁(基本原理和不同实现方式对比)

Redis-分布式锁(基本原理和不同实现方式对比)

时间:2024-07-02 22:30:51浏览次数:3  
标签:基本原理 Redis 可见 互斥 线程 mysql 分布式

文章目录

1、基本原理

分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。

分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行执行,这就是分布式锁的核心思路

在这里插入图片描述
在这里插入图片描述
那么分布式锁他应该满足一些什么样的条件呢?

可见性:多个线程都能看到相同的结果,注意:这个地方说的可见性并不是并发编程中指的内存可见性,只是说多个进程之间都能感知到变化的意思

互斥:互斥是分布式锁的最基本的条件,使得程序串行执行

高可用:程序不易崩溃,时时刻刻都保证较高的可用性

安全性:安全也是程序中必不可少的一环

在这里插入图片描述

2、不同实现方式

常见的分布式锁有三种

  • Mysql:mysql本身就带有锁机制,但是由于mysql性能本身一般,所以采用分布式锁的情况下,其实使用mysql作为分布式锁比较少见
    Redis:redis作为分布式锁是非常常见的一种使用方式,现在企业级开发中基本都使用redis或者zookeeper作为分布式锁,利用setnx这个方法,如果插入key成功,则表示获得到了锁,如果有人插入成功,其他人插入失败则表示无法获得到锁,利用这套逻辑来实现分布式锁
    Zookeeper:zookeeper也是企业级开发中较好的一个实现分布式锁的方案

在这里插入图片描述

标签:基本原理,Redis,可见,互斥,线程,mysql,分布式
From: https://blog.csdn.net/m0_65152767/article/details/140109818

相关文章

  • redis持久化
    redis持久化1.1介绍#redis持久化redis作为一个内存数据库,数据是以内存作为载体存储的,那么一单redis服务器进程退出,服务器中的数据也会消失。为例解决这个问题,redis提供了持久化机制。也就是把数据保存在磁盘中。有两种方式保存。#rdb快照持久化rdb快照的方式是指在一定的......
  • ssrf+结合redis 写入crontab或者公钥(两种环境)
    REDISredis作为一种数据库其实是会真的将数据写入到内存中的我们利用ssrf请求请求redis实现服务器对自己的公钥或任务计划写入实现无密码登录或反弹bashredis监听所有地址时才能被外部访问否则只能127.0.0.1本地访问而且开启保护模式后会导致目标端口只能本地访问这......
  • 【AKS+Redis】AKS中客户端(ioredis)遇见Azure Redis服务Failover后链接中断的可能性
    问题描述在AKS中连接Redis,当遇到AzureRedis升级或者Failover时,NodeJS应用中使用ioredissdk在很长一段时间内无法恢复和AzureRedis服务端的连接,对于这种想象的可能性推断。 问题解答使用AzureCacheforRedis时,一个服务器是主节点,另一个服务器是副本。主节点通常负......
  • Redis Sentinal(哨兵模式详解)
    参考文章https://www.cnblogs.com/wzh2010/p/180309071、什么是哨兵模式在实际生产环境中,服务器难免会遇到一些突发状况:服务器宕机,停电,硬件损坏等等,一旦发生,后果不堪设想。哨兵模式的核心还是主从模式的演变,只不过相对于主从模式,在主节点宕机导致不可写的情况下,多了探活,以及竞......
  • 23- Redis 主从复制是怎么实现的?
    之前介绍过AOF和RDB,这两个持久化技术保证了即使在服务器重启的情况下也不会丢失数据(或少量丢失)。不过,由于数据都是存储在一台服务器上,如果出事就完犊子了,比如:如果服务器发生了宕机,由于数据恢复是需要时间的,那么这个期间是无法服务新的请求的;如果这台服务器的硬盘出现了......
  • 保存到redis中的token乱码了
    示图:原因是缓存保存到redis需要序列化操作,没有序列化会出现这样的问题序列化redis第一步:packagecom.abliner.test.configure.redis;importcom.fasterxml.jackson.annotation.JsonAutoDetect;importcom.fasterxml.jackson.annotation.PropertyAccessor;importcom......
  • 十四、Redis应用问题解决
    文章目录一、缓存穿透1.1问题描述1.2解决方案二、缓存击穿2.1问题描述2.2解决方案三、缓存雪崩3.1问题描述3.2解决方案四、分布式锁4.1问题描述4.2解决方案:使用redis实现分布式锁4.3编写代码4.4优化之设置锁的过期时间4.5优化之UUID防误删4.6优化之LUA脚......
  • 十三、Redis集群
    文章目录一、问题二、什么是集群三、删除持久化数据四、制作6个实例6379,6380,6381,6389,6390,63914.1配置基本信息4.2rediscluster配置修改4.3修改好redis6379.conf文件,拷贝多个redis.conf文件4.4使用查找替换修改另外5个文件4.5启动6个redis服务......
  • 2024 Redis面试题
    Redis为什么快?1.纯内存KV操作        Redis的操作都是基于内存的,CPU不是Redis性能瓶颈,,Redis的瓶颈是机器内存和网络带宽。        在计算机的世界中,CPU的速度是远大于内存的速度的,同时内存的速度也是远大于硬盘的速度。redis的操作都是基于内......
  • Redis Stream 作为消息队列的详尽笔记
    概述RedisStream是Redis5.0版本引入的数据结构,用于消息传递。基础概念结构:消息链表,每个消息有唯一ID和内容。命名:每个Stream有唯一名称,对应RedisKey。消费组(ConsumerGroup):可挂载多个消费组,需手动创建。每个组有游标last_delivered_id,记录消费进度。消费......