如何将Redis分布式锁应用于秒杀场景,实现长尾词的精准锁定?
- 内容介绍
- 文章标签
- 相关推荐
本文共计389个文字,预计阅读时间需要2分钟。
Redis分布式锁的实现,利用redis的setnx(SET if Not exists)和getset命令。
import org.apache.commons.lang3.StringUtils; import org.springframework.data.redis.core.StringRedisTemplate; /** * @描述:Redis 做分布式锁,利用 redis的setnx(SET if Not eXists)命令 和 getset 命令,即下面代码中的方法 setIfAbsent 和 getAndSet * @作者:阳 * @时间:2017年09月15日 下午5:21 * @版本:1.0 */ public class RedisLock { private StringRedisTemplate redisTemplate; /** * 加锁 * @param key 被秒杀商品的id * @param value 当前线程操作时的 System.currentTimeMillis() + 2000,2000是超时时间,这个地方不需要去设置redis的expire, * 也不需要超时后手动去删除该key,因为会存在并发的线程都会去删除,造成上一个锁失效,结果都获得锁去执行,并发操作失败了就。
本文共计389个文字,预计阅读时间需要2分钟。
Redis分布式锁的实现,利用redis的setnx(SET if Not exists)和getset命令。
import org.apache.commons.lang3.StringUtils; import org.springframework.data.redis.core.StringRedisTemplate; /** * @描述:Redis 做分布式锁,利用 redis的setnx(SET if Not eXists)命令 和 getset 命令,即下面代码中的方法 setIfAbsent 和 getAndSet * @作者:阳 * @时间:2017年09月15日 下午5:21 * @版本:1.0 */ public class RedisLock { private StringRedisTemplate redisTemplate; /** * 加锁 * @param key 被秒杀商品的id * @param value 当前线程操作时的 System.currentTimeMillis() + 2000,2000是超时时间,这个地方不需要去设置redis的expire, * 也不需要超时后手动去删除该key,因为会存在并发的线程都会去删除,造成上一个锁失效,结果都获得锁去执行,并发操作失败了就。

