redis学習(五)redis実現ショッピングカート

1458 ワード

第二章
  •               ,         ID            
    
    
  • 商品数の検証はwebアプリケーションが担当し、商品の注文数が変化したときにショッピングカートを更新する
  • を行います.
    connect('127.0.0.1',6379);
    
    function add_to_cart($redis,$session,$item,$count)
    {
        if ($count<=0)
        {
            $redis->hDel('cart:'.$session,$item);  //            
        }else{
            $redis->hSet('cart:'.$session,$item,$count);  //            
        }
    }
    
    
    //        
    //    (cron)  
    /**
     *           
     * @param $redis
     */
    function clean_full_sessions($redis)
    {
    
    
            $quit = false;
            $limit = 1000000;
            while (!$quit)
            {
                $size = $redis->zCard('recent:');  //           
                if ($size < $limit)  //        ,          
                {
                    sleep(1);
                    continue;
                }else{
                    $quit = true;
                }
            }
            $end_index = min($size-$limit,100);
    
            $sessions = $redis->zRange('recent:',0,$end_index-1);  //         id
    
            foreach ($sessions as $sess)
            {
                $session_key [] = 'viewed:'.$sess;  //    
                $session_key [] = 'cart:'.$sess;  //              
            }
            $redis->delete($session_key);
            $redis->del('login:',$sessions);
            $redis->zrem('recent:',$sessions);  //       
    
    
    }