Redis使用watch完成抢购功能(基础版)
Redis使用watch实现抢购功能有如下优点:
1、选用内存数据库Redis来实现抢购,速度极快
2、使用watch,采用乐观锁,不采用悲观锁,因为等待时间非常长,响应慢,会迅速增加系统资源占用
3、不使用队列,因为并发量会使内存数据库资源瞬间爆炸
开始此功能前,先简单了解几个此功能需要用到的Redis事物命令:
1、MULTI :开始一个事务
2、EXEC:执行所有事物块内的命令
3、WATCH: 监视一个(或多个) key,如果在事务执行之前这个(或这些) key被其他命令所改动,那么事务将被打断
代码使用watchKeys存储抢购商品数量,UUID随机生成模拟客户数据,successSet存储抢购成功的客户信息,failSet存储抢购失败的客户信息。
使用ExecutorService线程池的newCachedThreadPool建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
Redis使用watch完成抢购功能(基础版)的代码地址:https://github.com/zhyiC/JetBrains/tree/master/redis