2011-07-07 1 views
35

Почему Redis использует целые числа базы данных вместо строк? Похоже, было бы тривиально сохранить небольшую внутреннюю структуру данных, которая отображает строки в «фактическое» целое число.Почему Redis использует целые номера базы данных?

+0

Лучше спросить о списке redis. – bmargulies

+1

Если я не могу получить ответ здесь, это будет моим следующим шагом ... Но я стараюсь избегать списков рассылки, когда это когда-либо возможно: P –

+3

Люди, которые голосовали за закрытие: не могли бы вы оставить комментарий, объясняющий почему? Я не думаю, что «этот вопрос», скорее всего, потребует мнения, дискуссии, аргументы, опрос или расширенную дискуссию », и я знаю, что Редис не так популярен, но я не думаю, что вопросы об этом квалифицируются как" необычайно узкий ". –

ответ

40

Причина, по которой Redis не использует строки как имена БД, но индексы заключаются в том, что цель и способность баз данных Redis не предоставлять внешний уровень словаря: словари Redis не могут масштабироваться для многих словарей, но только для небольшое число (это компромисс), и мы не хотим создавать вложенные структуры данных для каждого проекта, поэтому это всего лишь «несколько пространств имен», и в результате использование числового малого индекса показалось лучшим вариантом.

+5

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

4

Именованные базы данных не соответствуют целям дизайна redis. Для начала, в системе, предназначенной для максимальной производительности, добавление поиска строк для каждого вызова не является отличной идеей, когда большинство пользователей ставят все в DB 0 в любом случае.

Еще одна цель проекта - сохранить простую основу. Если запрошенная новая команда может быть реализована путем объединения существующих команд на клиенте без огромного штрафа за производительность, она не будет добавлена ​​в основную систему. Если вам действительно нужны именованные базы данных, тривиально обновить код клиента, прочитав строку, и отправьте номер на redis.

+1

«добавление поиска строк для каждого вызова» - исправьте меня, если я ошибаюсь, но вам нужно будет только искать каждый вызов SELECT (т. Е. Отображать символическое имя в целое число), нет? –

+1

Правда, хотя это может быть близко к эквиваленту в зависимости от того, как вы используете базы данных и соединения. –