>백엔드 개발 >PHP 튜토리얼 >Redis는 watch를 사용하여 플래시 세일 기능 코드를 완성합니다.

Redis는 watch를 사용하여 플래시 세일 기능 코드를 완성합니다.

不言
不言원래의
2018-05-07 13:51:083555검색

이 기사에서는 watch를 사용하여 플래시 세일 기능을 완성하는 것에 대한 코드를 주로 소개합니다. 이제 특정 참조 가치가 있습니다. 필요한 친구가 참조할 수 있습니다.

redis는 watch를 사용하여 플래시 세일 기능을 완성합니다. :

Redis에서 두 개의 키를 사용하여 플래시 세일 기능을 완성합니다. Mywatchkey는 긴급 구매 수량을 저장하는 데 사용되고 mywatchlist 사용자는 긴급 구매 목록을 저장하는 데 사용됩니다.

장점은 다음과 같습니다.

1. 먼저 인메모리 데이터베이스를 사용하여 매우 빠른 구매 속도를 달성합니다.

2. 빠른 속도와 동시성은 문제가 되지 않습니다.

3. 비관적 잠금을 사용하면 시스템 리소스가 빠르게 늘어납니다.

4. 대기열보다 훨씬 더 나은 점은 대기열이 메모리 데이터베이스 리소스를 즉시 오버플로한다는 것입니다.

5. 포괄적인 요구 사항을 충족하려면 낙관적 잠금을 사용하세요.

다음 코드가 확실히 당신이 원하는 코드라고 생각합니다.

<?php 
header("content-type:text/html;charset=utf-8"); 
$redis = new redis(); 
$result = $redis->connect(&#39;10.10.10.119&#39;, 6379); 
$mywatchkey = $redis->get("mywatchkey"); 
$rob_total = 100;  //抢购数量 
if($mywatchkey<$rob_total){ 
  $redis->watch("mywatchkey"); 
  $redis->multi(); 
  //设置延迟,方便测试效果。 
  sleep(5); 
  //插入抢购数据 
  $redis->hSet("mywatchlist","user_id_".mt_rand(1, 9999),time()); 
  $redis->set("mywatchkey",$mywatchkey+1); 
  $rob_result = $redis->exec(); 
  if($rob_result){ 
    $mywatchlist = $redis->hGetAll("mywatchlist"); 
    echo "抢购成功!<br/>"; 
    echo "剩余数量:".($rob_total-$mywatchkey-1)."<br/>"; 
    echo "用户列表:<pre class="brush:php;toolbar:false">"; 
    var_dump($mywatchlist); 
  }else{ 
    echo "手气不好,再抢购!";exit; 
  } 
} 
?>

관련 추천:

Python Redis 사용 방법에 대한 자세한 설명

위 내용은 Redis는 watch를 사용하여 플래시 세일 기능 코드를 완성합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.