Redis> Изолировать ключи с большими значениями? - PullRequest
0 голосов
/ 05 сентября 2018

Насколько я понимаю, лучшая практика для redis включает в себя множество ключей с небольшими значениями.

Однако у нас есть десятки ключей, которые мы хотели бы хранить по несколько МБ каждый. Когда трафик низкий, это работает большую часть времени, но в ситуациях с высоким трафиком мы обнаруживаем, что у нас возникают ошибки тайм-аута, которые начинают накапливаться. Это вызывает проблемы для всех наших крошечных запросов к redis, которые ранее были надежными.

Большие значения предназначены для оптимизации ключевой части функциональности нашего сайта и реального повышения производительности, когда все идет хорошо.

Есть ли хороший способ изолировать эти большие значения, чтобы они не мешали сетевому вводу-выводу наших лучших значений?

Обратите внимание, нам не нужно динамически обнаруживать, является ли значение> 100 КБ или в МБ. У нас есть конкретный метод, который мы могли бы использовать на отдельном сервере / экземпляре / базе данных / узле / шарде / разделе redis (я не специалист по аппаратному обеспечению).

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Правильным решением было бы иметь 2 отдельных кластера redis, один для ключей большого размера, а другой для ключей малого размера. Эти 2 кластера могут работать на одном и том же наборе физических или виртуальных машин, то есть многопользовательских (вы хотели бы сделать это, чтобы полностью использовать базовые ядра на вашей машине, так как сервер redis является однопоточным). Таким образом, вы сможете масштабировать оба кластера по отдельности, и ваша проблема, связанная с тайм-аутом небольших запросов из-за очереди за большими, будет уменьшена.

0 голосов
/ 05 сентября 2018

Просто установите / настройте столько экземпляров, сколько необходимо (2 в случае), каждый из которых управляет независимо на логическом подмножестве ключей (например, больших и малых), причем маршрутизация выполняется приложением. Просто и эффективно - разделяй и властвуй

...