如何利用Redis分布式锁处理高并发?
一、添加项目依赖
org.springframework.boot
spring-boot-starter-data-redis
二、配置文件
spring:
#Redis配置
redis:
host: localhost
password: 123456
三、模拟 抢购商品 的 Service 层
接口类
/**
* @author 刘路生
*/
public interface SellService {
/**
* 根据商品ID抢购商品并且返回商品的抢购详情
* @param productId
* @return
*/
String orderGoods(String productId);
/**
* 根据商品ID查询商品抢购详情
* @param productId
* @return
*/
String queryGoods(String productId);
}
实现类
@Service
@Slf4j
/**
* @author 刘路生
*/
public class SellServiceImpl implements SellService {
@Autowired
private RedisLock redisLock;
/**
设置超时时间10秒
*/
private static final int TIMEOUT = 10*1000;
/**
* 例如国庆大甩卖 图书大甩卖 库存 1000 件
*/
/**
* 库存
*/
static Map products;
/**
* 库存余量
*/
static Map stock;
/**
* 抢购成功者信息
*/
static Map orders;
static {
products = new HashMap<>();
stock = new HashMap<>();
orders = new HashMap<>();
products.put("book", 1000);