先拿 setnx 来争抢锁,抢到之后,再用 expire 给锁加一个过期时间防止锁忘记了 释放。 这时候对方会告诉你说你回答得不错,然后接着问如果在 setnx 之后执行 expire 之前进程意外 crash 或者要重启维护了,那会怎么样? 这时候你要给予惊讶的反馈:唉,是喔,这个锁就永远得不到释 ...
分类:
其他好文 时间:
2020-07-14 16:24:40
阅读次数:
96
谈起redis锁,下面三个,算是出现最多的高频词汇: setnx redLock redisson setnx 其实目前通常所说的setnx命令,并非单指redis的setnx key value这条命令。一般代指redis中对set命令加上nx参数进行使用, set这个命令,目前已经支持这么多参数 ...
分类:
其他好文 时间:
2020-07-12 20:38:13
阅读次数:
68
首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 互斥性。在任意时刻,只有一个客户端能持有锁。 不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。 具有容错性。只要大部分的Redis节点正常运行,客户端就可以加锁和解锁。 解铃还须系 ...
分类:
其他好文 时间:
2020-07-12 20:29:53
阅读次数:
65
Redis实现分布式锁与任务队列的思路,附上源代码 文章步骤很详细较长,阅读完需有5分钟~ 一、正文 大家都知道在天猫、京东、苏宁等等电商网站上有很多秒杀活动,例如在某一个时刻抢购一个原价1999现在秒杀价只要999的手机时,会迎来一个用户请求的高峰期,会有几十万几百万的并发量,来抢这个手机,在高并 ...
分类:
其他好文 时间:
2020-07-12 10:32:35
阅读次数:
65
字节跳动提前批 时间:2020-07-09 18:00-19:00 内容 项目 背景:基于ZooKeeper的配置中心 问题: 项目的背景 如何实现 分布式锁的实现 Java基础 问题: HasMap的数据结构 HashMap如何解决哈希冲突 算法 常见的排序算法有哪些 快排的时间复杂度,最差的时间 ...
分类:
其他好文 时间:
2020-07-09 22:35:20
阅读次数:
87
Laravel Redis分布式锁的使用 创建锁 use Illuminate\Support\Facades\Cache; $lock = Cache::lock('foo', 10); if ($lock->get()) { // 处理业务逻辑 sleep(3); $lock->release( ...
分类:
其他好文 时间:
2020-07-09 22:22:13
阅读次数:
117
原理: 1 zookeeper 可以建立临时节点文件 znode 结构如高度为2的树 在 basepath+lockname上建立 basepath+lockname 1 basepath+lockname 2 basepath+lockname 3 的顺序节点 2 watcher机制。可以建立某一 ...
分类:
其他好文 时间:
2020-07-07 17:48:36
阅读次数:
67
1.通过官方文档查看相关的命令操作:http://www.redis.cn/commands.html 关键命令:setIfAbsent(String key,String value)对应官方文档的 setnx 解释:将key设置值为value,如果key不存在,这种情况下等同SET命令。 当ke ...
分类:
其他好文 时间:
2020-07-06 23:55:00
阅读次数:
80
在使用Redis的分布式集群的时候,我们进行操作的时候需要对抢锁,也就是对线程的操作权限 我们在Redis中可以使用SetNX命令来进行锁争抢。 sexnx(Key,value),其中的key指的是锁的唯一标识,value姑且为1。 当锁抢成功,返回1则代表锁争抢成功。当然,我们接下来需要给锁一个有 ...
分类:
其他好文 时间:
2020-07-06 20:21:57
阅读次数:
71
【本文完善中...】 无论是http接口,还是rpc接口,防重复提交(接口防重)都是绕不过的话题。 重复提交与幂等,既有区别,又有联系。幂等的意思是,对资源的一次请求与多次请求,作用是相同的。HTTP的POST方法是非幂等的。如果程序处理不好,重复提交会导致非幂等,引起系统数据故障。防重复提交,要通 ...
分类:
其他好文 时间:
2020-07-06 19:55:13
阅读次数:
86