|
1、本项目从抽象到实现阐述了如何利用redis实现分布式锁,完成简单的秒杀功能3 r. S7 r) }4 h7 b. Y. K9 w& U
2、项目主要用到的redis锁的概念, \' z- t! T$ z u* K- y% j
秒杀中需要考虑的问题点:
; Y% I3 @1 h, S! T! k6 d3 k1、既然有并发问题,那我就让他“不并发”,将所有的线程用一个队列管理起来,使之变成串行操作,自然不会有并发问题。0 \+ \5 D+ T$ A3 ^/ U! L
2、秒杀在技术层面的抽象应该就是一个方法,在这个方法里可能的操作是将商品库存-1,将商品加入用户的购物车等等,在不考虑缓存的情况下应该是要操作数据库的。那么最简单直接的实现就是在这个方法上加上synchronized关键字,通俗的讲就是锁住整个方法; \+ P, d+ S. F# p# A
3、锁住整个方法这个策略简单方便,但是似乎有点粗暴。可以稍微优化一下,只锁住秒杀的代码块,比如写数据库的部分;
' u5 @9 v# j2 ]3 n; t5 f& T) I% _- n8 _6 {( |7 n0 K; A! }+ r8 U
) b3 \' g% P8 S5 I$ Y百度网盘下载地址链接(百度云):java自学网(javazx.com)redisframework-master.rar 密码回帖可见
+ V% o% u5 s# A( X; ~. P' \3 N* X3 x+ b$ u" g
|
|