先拿 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命令: SET 命令 set key value 设置指定 key 的值为 value。 如果 key 已经存储其他值, SET 就覆写旧值,且无视类型。 127.0.0.1:6379> set testSetKey aaa OK 127.0.0.1:6379> get te ...
分类:
其他好文 时间:
2020-07-12 11:57:06
阅读次数:
70
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
Redis分布式锁 原子操作 原子操作是指不会被线程调度机制打断的操作。这种操作一旦开始,就会一直运行到结束,中间不会有任何的线程切换。 原理 分布式锁本质上要实现的目标就是在Redis里面占一个坑,当别的线程也要来进行占坑的时候,发现已经被别人占用了,只好放弃或者稍后重试。 占坑使用setnx(s ...
分类:
其他好文 时间:
2020-06-11 23:21:49
阅读次数:
101
1.redis应用场景? (1)token令牌的生成 通过token替代session,session有个最大的问题是不支持集群。把token存在redis里,因为redis是可以共享使用的。 (2)短信验证码code 验证码有效期只有30分钟或者1小时,使用redis对验证码的code设置有效期。 ...
分类:
其他好文 时间:
2020-06-04 15:30:53
阅读次数:
89
一.介绍 分布式锁,或者称为“全局锁”,在分布式环境中,保证锁只能被一个对象(或者成为“事务”)获取,经常出现在“避免数据重复处理”、“接口幂等”的场景。 下面介绍了Redis中两种分布式锁的实现方式。 二.setnx + expire组合 2.1命令介绍 使用setnx和expire命令组合实现, ...
分类:
其他好文 时间:
2020-05-28 00:49:16
阅读次数:
57
set k v setEx k s v s秒过期 pSetEx k m v m毫秒过期 setNx k v k不存在时才设置 get k getSet k v k设为v,并返回k的旧值 mSet k1 v1 k2 v2 设置多个值 mSetNx k1 v1 k2 v2 当所有k都不存在时,设置多个值 ...
分类:
其他好文 时间:
2020-05-27 20:16:03
阅读次数:
63
配置,需要设置setEnableTransactionSupport,开启事务 实现理念 使用 setnx(set if not exist)实现分布式锁 setnx性质:如果不存在那么返回 0 ,不存在返回 1 。 ...
分类:
其他好文 时间:
2020-05-11 00:43:56
阅读次数:
57