Ответ 1
Я просмотрел веб-сайт redis и обнаружил, что redis не предназначен для многоядерного процессора. Мой вопрос: почему это так?
Это дизайнерское решение.
Redis является однопоточным с epoll/kqueue и неограниченно масштабируется с точки зрения ввода-вывода concurrency. - @antirez (создатель Redis)
Причиной выбора подхода, управляемого событиями, является то, что синхронизация между потоками сопряжена с затратами как на программное обеспечение (сложность кода), так и на аппаратный уровень (переключение контекста). Добавьте к этому, что узким местом Redis обычно является сеть, а не процессор. С другой стороны, однопоточная архитектура имеет свои преимущества (например, гарантию атомарности).
Поэтому циклы событий кажутся хорошим дизайном для эффективной и масштабируемой системы, такой как Redis.
Кроме того, если да, то как мы можем 100% использовать ресурсы ЦП с помощью redis на многоядерных процессорах.
Redis подходит для масштабирования по нескольким ядрам sharding, в основном вместе с Twemproxy.
Однако, если по какой-то причине вы все еще хотите использовать многопоточный подход, посмотрите Thredis, но убедитесь, что вы понимаете последствия того, что его автор (например, вы не можете использовать его как мастер репликации).