redis действительно хорош только для задач в памяти.У него ДЕЙСТВИТЕЛЬНО есть возможность перелистывания страниц на диск, но тогда вы зависите от подкачки ОС, а именно - ваша ОЗУ будет конкурировать с системным кешем.Кроме того, я думаю, что ключи всегда должны помещаться в оперативной памяти.Таким образом, вы НЕ собираетесь хранить записи журнала 1G + - mysql-archive-table НАМНОГО лучше для этого.
redis имеет функциональность master-slave, аналогичную mysql.Таким образом, вы можете выполнять различные приемы, такие как сортировка на подчиненном устройстве, чтобы мастер реагировал.Хотя я не использовал его, я бы предположил, что для баз данных в памяти mysql-cluster, вероятно, гораздо более продвинутый, но с соответствующими дополнительными сложностями / затратами ресурсов.ваш набор ключ-значение, вы можете выполнить сжатие / распаковку на стороне клиента.В любом случае, сервер ничего не может сделать для поиска значений этих «больших двоичных объектов».
Один из распространенных способов обойти ограничение ОЗУ - выполнить сегментирование на стороне клиента (разбиение на разделы).А именно, если вы ЗНАЕТЕ свои верхние границы, и у вас недостаточно ОЗУ для решения проблемы по какой-либо причине (скажем, у вас уже есть 64 ГБ ОЗУ), то вы можете «осколить» на основе первичного ключа. Если этосчетчик последовательности, вы можете взять последние 3 бита (или некоторую функцию хеширования + функцию секционирования) и распределить между 4,8,16 и т. д. узлами сервера.Это линейно масштабируется, хотя, если вам нужно переразбить, это может быть болезненным.Вы МОЖЕТЕ воспользоваться преимуществами «слотов» в redis для запуска с меньшим количеством машин. Скажем, 1 машина с 16 слотами. Затем, позже, сбросьте слоты 7-15 и восстановите их на другом компьютере и переназначьте всех клиентов, чтобы они указывали надве машины (с одинаковыми номерами слотов).И так далее до шардинга с 16 путями.В этот момент вам нужно будет переназначить ВСЕ ваши данные, чтобы перейти на 32-полосную.
Очевидно, сначала оцените набор команд redis, чтобы увидеть, можно ли ВСЕ ваши потребности в хранении данных и отчетности удовлетворить.Есть эквиваленты для «select * from foo for update», но они не очевидны.Не все запросы СУБД могут быть эффективно воспроизведены с хранилищами ключ-значение.Но для простых структур записей естественного первичного ключа это должно подойти.
Кроме того, должно быть легко расширить набор команд redis для выполнения настраиваемых операций.приостановить однопоточное выполнение (избегая блокировки / переключения контекста).
Но мне действительно нравятся FIFO, pub / sub, тайм-ауты данных, атомарные мутации (inc / dec),отложенная сортировка (например, на клиенте с узлами только для чтения), карты карт.Достаточно просто, что вместо использования пространств имен вы просто запускаете отдельные процессы redis на разных портах / UNIX-сокетах (мое предпочтение, если это возможно).
Он предназначен для замены memcached больше, чем что-либо еще, но имееточень приятный фон, постоянные рамки.