Разгледах уебсайта на redis и открих, че redis не е проектиран за многоядрен процесор. Въпросът ми е защо е така?
Това е дизайнерско решение.
Redis е еднонишков с epoll/kqueue и се мащабира неограничено по отношение на I/O паралелност. [email protected] (създател на Redis)
Причина за избора на подход, управляван от събития, е тази синхронизация между нишките има цена както в софтуера (сложност на кода), така и на ниво хардуер (превключване на контекста). Добавете към това, че тесното място на Redis обикновено е мрежата , а не процесора. От друга страна, еднонишковата архитектура има своите предимства (например гаранция за атомарност).
Следователно циклите на събития изглеждат като добър дизайн за ефективен &мащабируеми система като Redis.
Освен това, ако отговорът е да, как можем да направим 100% използване на ресурсите на процесора с redis на многоядрени процесори.
Подходът на Redis за мащабиране върху множество ядра е шардинг , предимно заедно с Twemproxy.
Ако обаче по някаква причина все пак искате да използвате многонишков подход, погледнете Thredis, но се уверете, че разбирате последиците от това, което е направил неговият автор (не можете да го използвате като главен за репликация, например).