您好,欢迎访问一九零五行业门户网

Redis抢票先进先出

redis+thinkphp=》抢票 1超大流量的抢票(比如地铁,限时抢购这样的) 数据千万不要往数据库存储;数据库容易发生崩溃 抢票(1)先建一个redis存储一等奖 (2)建一个redis存储二等奖 (3)第三个redis存储单一的openid或者手机号,唯一编号等; 特别备注:可
redis+thinkphp=》抢票
1 超大流量的抢票(比如地铁,限时抢购这样的)
   数据千万不要往数据库存储 ;数据库容易发生崩溃
   抢票 (1)先建一个redis 存储一等奖
           (2)建一个redis 存储 二 等奖
           (3)第三个 redis 存储 单一的 openid或者手机号,唯一编号等;
          特别备注: 可以用 set集合存储,插入重复的openid 返回 0 ;正确返回 插入个数1,2,3,4。。。。。
          (4)第四个 redis 存储 openid,ticketsid,返回用户 所获得的 票id
   最后一次性到处 第四个redis记录 存储到数据库作为 记录
/* * 是否已经抢票 */ public function is_fight_tickets($fightticktes,$openid){ $where['openid'] = $openid; $where[telephone] = array('exp', 'is not null'); $ticketsresults = $fightticktes ->where($where) -> find(); ///判断是否已经购票 if(!empty($ticketsresults)){ return $ticketsresults; }else{ $allowtickets = $this->allowtickets(); ///返回数字 或者 false if($allowtickets){ ////插入 }else{ } } } //允许 public function allowtickets($openid){ $cache = cache::getinstance('redis'); $result =$cache->lpop(fight_tickets:ticketlist); return $result; } public function createtickets(){ $cache = cache::getinstance('redis'); ///$hashset = fight_tickets:; for($i=10;$irpush(fight_tickets:ticketlist,$i); echo $i; } sadd key member [member ...] 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。 假如 key 不存在,则创建一个只包含 member 元素作成员的集合。 当 key 不是集合类型时,返回一个错误。 返回值: 被添加到集合中的新元素的数量,不包括被忽略的元素。 # 添加单个元素 redis> sadd bbs discuz.net (integer) 1 # 添加重复元素 redis> sadd bbs discuz.net (integer) 0 # 添加多个元素 redis> sadd bbs tianya.cn groups.google.com (integer) 2 /* 从list 头部压入一个元素 先进后出 lpush mylist word lpush mylist ehll lrange mylist 0 -1 显示 ehll word */ /* rpop 从list 尾部删除一个元素,并返回删除的元素 ///rpop mylist //$times = $cache->get($hashset); //$key = 集合数据id; //$cache->zrem($hashset,$key);*/ }
其它类似信息

推荐信息