当前位置: 首页 > news >正文

企业网站源码 java合肥优化排名推广

企业网站源码 java,合肥优化排名推广,东莞做营销型网站,怎么免费注册自己的网站抢购是如今很常见的一个应用场景,主要需要解决的问题有两个:1 高并发对数据库产生的压力2 竞争状态下如何解决库存的正确减少(“超卖”问题)对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使…

抢购是如今很常见的一个应用场景,主要需要解决的问题有两个:

1 高并发对数据库产生的压力

2 竞争状态下如何解决库存的正确减少(“超卖”问题)

对于第一个问题,已经很容易想到用缓存来处理抢购,避免直接操作数据库,例如使用Redis。重点在于第二个问题,我们看看下面一种常规的实现代码:

require('predis/src/Autoloader.php');

$redis = new Predis\Client(array(

'scheme' => 'tcp',

'host' => '127.0.0.1',

'port' => '6379'

));

//redis 登录

$redis->auth('123456');

//库存

$num = 10;

//用户id

$user_id = $_SESSION['user_id'];

//检查库存

$len = $redis->llen('order:1');

if($len >= $num){

exit('已经抢光了');

}

//把抢到的用户存入到列表中

$result = $redis->lpush('order:1',$user_id);

if($result){

echo '抢到了';

}

?>

如果代码正常运行,列表order:1中最多只能存储10个用户的id,因为库存只有10个。

然而,在使用Apache AB工具模拟很多用户并发请求时,最后发现order:1中总是超过10个用户,也就是出现了“超卖”。

问题就出在这一段代码:

//检查库存

$len = $redis->llen('order:1');

if($len >= $num){

exit('已经抢光了');

}

在抢购进行到一定程度,假如现在已经有9个人抢购成功,又来了3个用户同时抢购,这时if条件将会被绕过,这三个用户都能抢购成功。而实际上只有一件库存可以抢了。

在高并发下,很多不是问题的,都成了问题。要解决“超卖”问题,核心在于保证检查库存时的操作是依次执行的,形象的说就是把“多线程”转成“单线程”。即使有很多用户同时到达,也是一个个检查并给与抢购资格,一旦库存抢尽,后面的用户就无法继续了。

我们需要使用Redis的原子操作来实现这个“单线程”。首先我们把库存存在goods:1这个列表中,假设有10件库存,就往列表中push10个数,这个数没有实际意义,仅仅代表一件库存。抢购开始后,每到来一个用户,就从goods:1中pop一个数,表示用户抢购成功。当列表为空时,表示已经被抢光了。因为列表的pop操作是原子的,即使有很多用户同时到达,也是依次执行的。抢购的示例代码如下:

//抢购

require('predis/src/Autoloader.php');

$redis = new Predis\Client(array(

'scheme' => 'tcp',

'host' => '127.0.0.1',

'port' => '6379'

));

$redis->auth('123456');

//用户ID

$user_id = $_SESSION['user_id'];

$check = $redis->lpop('goods:1');

if(!$check){

exit('抢光了');

}

$result = $redis->lpush('order:1',$user_id);

if($result){

echo '抢购成功';

}

?>

用户抢购成功后,我们将用户ID存入了order:1列表中。接下来我们可以引导这些用户去完成订单的其他步骤,这里才涉及到与数据库的交互。最终只有很少的人走到这一步,也就解决的数据库的压力问题。

为了检测实际效果,我使用Apache AB工具模拟10、20、1000个用户并发进行抢购,经过大量的测试,最终抢购成功的用户始终为10,没有出现“超卖”。

http://www.wooajung.com/news/34107.html

相关文章:

  • 网站建设幽默北京seo推广外包
  • 武汉门户网站建设苏州网站
  • 怎么制作网站应用市场推广策略 包括哪些
  • 招标网站开发设计网站排名
  • 有哪些在线做图的网站公司网站策划宣传
  • 自助建站申请书自媒体培训学校
  • 网站域名备案时间如何注册网站平台
  • 网站页脚优化怎么做企业宣传册模板
  • 自助式建站平台关键词查询的五种常用工具
  • 如何做app网站网络项目免费的资源网
  • 购物网站页面设计图片百度投诉电话人工服务总部
  • 如何建立网站链接北京整站线上推广优化
  • 遵义网站建设网站长春关键词优化平台
  • wordpress的中文插件安装教程seo网站关键词
  • 上海公安网站备案今日最新新闻重大事件
  • 全球做的最好的公司网站漳州网络推广
  • 新疆建设兵团职改办网站网络推广文案
  • 网站开发的平台北京seo技术交流
  • 网站问题有哪些内容seo网络推广报价
  • 查备案网站百度官网地址
  • course网站课程建设广州seo优化电话
  • 网络营销推广方案创意百度seo排名优化软件化
  • 求一个做烧肉的网站电子商务seo是什么意思
  • 动态ip上做网站友情链接吧
  • 沧州做网站哪家公司好企业网站是什么
  • 网站建设公司crm系统搜索引擎营销的主要方法包括
  • 手机如何创建简易网站seo优化是做什么的
  • 网站建设资格预审公告橘子seo查询
  • 济南公司注册网站建设公众号开发
  • 网站建设项目管理论文seo文章