Подтвердить что ты не робот

Пространства имен в Redis?

Возможно ли создать пространства имен в Redis?

Из того, что я нашел, все глобальные команды (подсчет, удаление всех) работают на всех объектах. Есть ли способ создать подпространства, чтобы эти команды были ограничены в контексте?

Я не хочу настраивать разные серверы Redis для этой цели.

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

4b9b3361

Ответ 1

Сервер Redis может обрабатывать несколько баз данных... которые нумеруются. Я думаю, что это обеспечивает 32 из них по умолчанию; Вы можете получить к ним доступ, используя опцию -n для команды сценариев оболочки redis-cli и аналогичные опции для аргументов соединения или используя метод "select()" для его объектов соединения. (В этом случае .select() - это имя метода для модуля Python Redis... Я предполагаю, что он назван аналогично для других библиотек и интерфейсов.

Также есть возможность контролировать, сколько отдельных баз данных вы хотите в файле конфигурации для демона сервера Redis. Я не знаю, каким будет верхний предел, и, похоже, нет способа динамически изменить это (другими словами, кажется, что вам придется выключить и перезапустить сервер, чтобы добавить дополнительные БД). Кроме того, кажется, что нет никакой возможности связать эти номера БД с каким-либо именем, ни навязать им отдельные ACLS или даже другие пароли. Redis, конечно, тоже не содержит схем.

Ответ 3

Если вы используете Node, у ioredis есть прозрачный префикс ключа, который работает, когда клиент добавляет в строку заданную строку к каждому ключу в команде. Он работает так же, как Ruby redis-namespace. Этот подход на стороне клиента по-прежнему помещает все ваши ключи в одну и ту же базу данных, но, по крайней мере, вы добавляете некоторую структуру, и вам не нужно использовать несколько баз данных или серверов.

var fooRedis = new Redis({ keyPrefix: 'foo:' });
fooRedis.set('bar', 'baz');  // Actually sends SET foo:bar baz