概述
ref:https://www.bilibili.com/video/BV1Rv41177Af?p=40
系列文章目录
文章目录
- 系列文章目录
- 1.分布式锁
- 1.1 分布式锁要解决的问题?
- 1.2 分布式锁主流解决方案?
- 2.
- 总结
1.分布式锁
1.1 分布式锁要解决的问题?
当系统架构演变为分布式架构 或者 集群架构后,再使用Java API提供的锁就不行了,因为Java API的锁它只能 控制一个节点内的共享资源,因此只适合单体应用。
而分布式架构或 集群架构下,系统分布在不同的节点上,因此就需要使用分布式锁 来控制的共享资源的访问。
1.2 分布式锁主流解决方案?
主流方案有很多。
1、基于数据库实现分布式锁
2、基于Redis
3、基于Zookeeper
而我们主要讨论基于Redis的实现, 而基于Redis的实现的核心命令是:
//设置锁
setnx key value
//设置锁的过期时间
expire key 过期时间
//释放锁
del key
=================完美的等价替换方案是========================
1、刚进入方法的首行,执行:set key value nx ex 10 //过期时间10s
2、共享资源 业务逻辑处理
3、方法的末行,执行 del key //释放锁
当key不存在时,执行这个命令,返回值为1。
当key存在时,执行这个命令,返回值为0。相当于对key上了一把锁,在锁定期间只能重试访问,只有当释放这个锁,即删除key时,别人才能set新值。
对应的逻辑图如下图:
存在的问题:
为了防止一个线程一直占用着锁不释放,我们可以在setnx后 再设置key的过期时间。
setnx key value //设置锁
expire key 过期时间
del key
但是这种方式令会有问题:因为这个过程不是一个原子操作。我们可以使用一种等价替换的方案:即setnx的同时,去设置过期时间。
set key value nx ex 10
2.
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
最后
以上就是危机篮球为你收集整理的Redis企业级应用问题系列文章目录1.分布式锁2.总结的全部内容,希望文章能够帮你解决Redis企业级应用问题系列文章目录1.分布式锁2.总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复