![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分布式锁
多动手,勤思考
阿布
展开
-
Spring (boot) + Redis 实现接口分布式并发锁, 同一个用户同一时间只能访问一次
源代码已上传至github: https://github.com/qiaomengnan16/spring-boot-rest-redis-lock 应用场景:例如出现用户领券、抢红包这种高并发的情况下,用户只能抢一次,这时候简单的代码if判断在毫秒级别内无法完全控制住,数据库可能又无法做唯一锁、乐观锁等,这时候可以通过redis来控制。 说下思路 1. 通过使用redis的setNx命令来做同一时间内唯一并发基础。 2. 在接口层面加上锁,这时候考虑采用AOP,进入接口前加锁,结束后释放锁原创 2020-07-06 12:39:17 · 3063 阅读 · 2 评论 -
KeyExpirationEventMessageListener Key过期监听事件,服务集群出现的业务问题
项目有个业务场景,到某个时间节点时,固定向用户的公众号发送消息通知~ 因为时间点不固定所以没有采用定时任务, 使用redis的key失效监听器来做,思路就是将key保存的时候, 算好当前和那个需要发送通知时候的时间间隔作为key失效时间,这样就可以保证到点实时发送消息了。 单机模式下测试推送正常,但是到线上的时候,用户收到了两条推送,原因是因为服务开了集群,key失效的时候每个服务都收到了通知,这...原创 2019-08-08 18:20:06 · 12898 阅读 · 13 评论