Redis 商品秒杀案例

2019年8月22日 0 条评论 42 次阅读 0 人点赞

由于Mysql在处理并发业务的时候,性能欠佳,尤其是使用到了悲观锁,阻塞形式的悲观锁,如果在用户量少的情况下还可以使用,如果在用户量大的情况下使用,用户体验会非常差,这里介绍Redis中的并发队列使用

Redis中由于pop这个出队的操作是原子性的,不论请求有多大,它都是按顺序来的,因此实现秒杀的业务需求会比mysql简单许多。

以下是代码解释:

 

此时我们开始进行秒杀模拟

前面的文章介绍到了,在本地模拟mysql的并发操作,我用的是curl模拟多线程并发操作,再此处,我们换了一个工具:Webbench,该工具可以在linux操作系统上测试服务器的压力,具体下载方式,我们最后再介绍。

以下是下单逻辑操作

 

此时我们就可以看看数据库是否被秒杀异常

进入redis-cli客户端,查看库存是否为负数

lrange goods 0 -1

lrange是用来查看链表中的各个元素,goods代表链表的键名,0代表从下标为0的开始查,-1代表从最后一个元素,即从0位开始查,查到-1位(即最后一位元素)

解释过来即是 lrange 参数keys 参数start 参数end

上面的结果很明显,商品被秒杀完毕,没有出现负数的情况

而我们再来看看用户信息表中的情况,看看幸运秒杀用户是哪20位

lrange user 0 -1

就此,一个小案例就结束了。

最后分享下 webbench压力测试工具如何安装(方法如下:)

从官网下载webbench-1.5.tar.gz

当然也可以选择wget方法

命令: wget http://soft.vpser.net/test/webbench/webbench-1.5.tar.gz

解压: tar -zxvf webbench-1.5.tar.gz

进入解压目录: cd webbench-1.5

make

make install

当出现以下情况,即为安装成功

install -s webbench /usr/local/bin
install -m 644 webbench.1 /usr/local/man/man1
install -d /usr/local/share/doc/webbench
install -m 644 debian/copyright /usr/local/share/doc/webbench
install -m 644 debian/changelog /usr/local/share/doc/webbench

此时就可以在当前目录进行简单测试了

命令: webbench -c 500 -t 30 http://www.baidu.com

参数-c (连接数)

参数 -t (时间)

兰陵美酒郁金香

左手代码右手诗

文章评论(0)