Можно узнать через LLEN сколько всего элементов в очереди в любое время. Если очереди в один поток последовательно разгребаются, то возможно вычислить позицию задачи зная сколько всего было создано/завершено, а вот если нет, то только ковыряясь в очередях.
Вам надо не только анкеты вынести в отдельные таблицы, но и типы юзеров.
Итого таблицы
users
doctors
clients
admins
Таблицы докторов и клиентов ссылаются на users. В users общая инфа, в doctors ид из юзера и все необходимые поля для анкеты. С клиентами также. Админы могут быть не завязаны на юзеров, это как требования организованы.
Есть 2 способа, простой и муторный.
Простой способ это каждый раз удалять старые данные из корзины и записывать новые.
Муторный способ это комбинация функций array_diff чтобы узнать какие товары надо добавить, а какие удалить
6379 это же порт редиса, зачем вы в него долбите по http?
Для работы broadcast надо запустить очередь
php artisan queue:work redis --tries=0 --timeout=0
Либо можно без очереди (синхронный драйвер очереди)
class SectionCreateEvent extends Event implements ShouldBroadcastNow