java三种队列详解 Java中如何解决高并发秒杀?

Java中如何解决高并发秒杀?1. 首先,我们会考虑使用数据库的乐观锁和悲观锁进行操作但是每次获取数据时悲观锁都会锁定。谁拿到锁就有权操作。每个操作都会锁定资源,这将导致效率低下。乐观锁适用于冲突较少

Java中如何解决高并发秒杀?

1. 首先,我们会考虑使用数据库的乐观锁和悲观锁进行操作

但是每次获取数据时悲观锁都会锁定。谁拿到锁就有权操作。每个操作都会锁定资源,这将导致效率低下。

乐观锁适用于冲突较少的情况,否则总是重试,但会降低系统性能。而且写得太多了。系统很容易崩溃。

我们使用redis模式将同步写入更改为异步写入。

我们使用redis进行秒杀。在秒杀之前,我们首先将清单读入redis。我们使用单进程和单线程redis来控制并发,redis提供了两种方式。

第一个是redis transaction的watch语句,它监视库存的变化。如果库存发生变化并且事务在此更新中失败,则更新将失败。

另一种是redis的列表结构,类似于queue的机制,是串行执行的。

每次修改资源清册时,我们都使用MQ更改数据库

这是一种从同步更改为异步的方法。