八、如何实现商品秒杀
一、怎么预防数据库超售现象
1. 设置事务隔离级别为 serializable
serializable
事务隔离级别,一般不建议使用,他是串行执行事务的
2. 在数据表上设置乐观锁
程序实现
3. 利用Redis
Redis
读写性能2万/秒
,MySQL
读性能5千/秒
,写入3千/秒
Redis
是单线程的NoSQL
数据库,但是采用的是非阻塞执行
因为
Redis
是单线程,反而有时候处理速度比其他多线程的速度还快,因为它避免了多线程之间的切换
因为Redis
的单线程是非阻塞执行的,客户端的发送的多条指令之间,Redis
的单线程可能去执行其他客户的指令,所以并发修改数据容易产生超售的结果。
Redis
引入了事务机制(批处理),一次性把多条命令传递给Redis
执行,这就避免了其他客户端中间插队,出现超售的现象。