$v > 0)); if (empty($userIds)) { throw new BusinessException('轮询分配业务员失败:业务员列表不能为空'); } $count = count($userIds); // Redis key:同一个 groupKey 共用一条轮询链 $key = self::REDIS_KEY_PREFIX . $groupKey; // 使用 INCR 做自增计数,天然是原子操作,适合并发环境 // 第一次调用 INCR 返回 1,我们用 (value - 1) 来做索引,从 0 开始 $val = Redis::incr($key); // 如果不存在,Redis 会先置为 0 再加 1 $index = ($val - 1) % $count; return $userIds[$index]; } }