|
|
|
Попробуй систему в действии, бесплатно и быстро. |
|
|
|
|
|
|
|
|
|
Бесплатная регистрация в трастовых каталогах и досках обьявлений. |
|
|
|
|
|
|
|
|
|
Добавь бесплатно сайт в 211 поисковые системы. Ru, Eng, Fra, Esp, Ukr. |
|
|
|
|
|
|
 |
|
Начало работы с Node и Redis
Redis поддерживается несколькими модулями, включая модуль Redback, который предоставляет высокоуровневый интерфейс, но в данной главе мы сконцентрируемся только на модуле node_redis, или просто redis (именно этого названия мы будем придерживаться), созданным Мэттом Рэнни (Matt Ranney). Мне нравится redis, потому что он предлагает простой и элегантный интерфейс для непосредственного доступа к Redis-командам, поэтому вы можете воспользоваться своими знаниями об этом хранилище данных, практически не прибегая к дополнительным источникам информации.
GitHub-страница redis находится по адресу https://github.com/mranney/node_redis.
Модуль redis можно установить с помощью диспетчера Node-пакетов:
npm install redis
Я также рекомендую воспользоваться библиотекой hiredis, поскольку ее код является неблокирующим, что дает более высокую производительность. Установите эту библиотеку, воспользовавшись следующей командой:
npm install hiredis redis
Для использования redis в Node-приложениях этот модуль нужно сначала подключить:
var redis = require('redis');
Затем нужно создать Redis-клиента. Для этого используется метод createClient:
var client = redis.createClient();
Метод createClient может получать три дополнительных параметра: порт, хост и ключи (см. далее), по умолчанию в качестве хоста устанавливается значение 127.0.0.1, а в качестве порта — 6379. Для порта берется одно из тех значений, которые предлагаются по умолчанию для Redis-сервера, поэтому, если Redis-сервер находится на той же самой машине, что и Node-приложение, то значения, предлагаемые по умолчанию, нас вполне устроят.
Третьим параметром является объект, поддерживающий следующие ключи:
Parser
Парсер ответа Redis-протокола; по умолчанию имеет значение hiredis. Можно также воспользоваться парсером java script.
return_buffers
По умолчанию имеет значение false. Если устанавливается значение true, все ответы отправляются в виде Node-объектов буфера, а не в виде строк.
detect_buffers
По умолчанию имеет значение false. Если устанавливается значение true, ответы отправляются в виде объектов буфера, если какой-либо ввод в исходных командах был представлен в виде буферов.
socket_nodelay
По умолчанию имеет значение true; определяет, стоит ли вызывать setNoDelay для TCP-потока.
no_ready_check
По умолчанию имеет значение false. Если устанавливается значение true, запрет на «проверку готовности» (ready check) отправляется на сервер для проверки его готовности к получению дополнительных команд.
Пока в работе Node и Redis вас все устраивает, используйте установки, предлагаемые по умолчанию.
Имея клиентское подключение к хранилищу данных Redis, вы можете отправлять команды на сервер, пока не будет вызван метод client.quit, который закрывает подключение к Redis-серверу. Для принудительного завершения работы можно вместо него воспользоваться методом client.end, но он завершает работу, не дожидаясь синтаксического разбора всех ответов. Поэтому метод client.end подходит в ситуации, когда ваше приложение зависло или вы решили начать все сначала.
Выдача Redis-команд через клиентское подключение является интуитивно понятным процессом. Все команды доступны в виде методов объекта клиента, а аргументы командам передаются в виде параметров. Поскольку это Node, последний параметр является функцией обратного вызова, которая возвращает ошибку и все, что является данными или ответом на Redis-команду.
В следующем коде метод client.hset используется для задания свойства хэша:
client.hset("hashid", "propname", "propvalue", function(err, reply) { // какие-либо действия с ошибкой или откликом });
Команда hset устанавливает значение, поэтому нет никаких возвращаемых данных, есть только подтверждение от Redis. Если вызывается метод, который выдает несколько значений, например client.hvals, вторым параметром в функции обратного вызова будет массив: либо массив отдельных строк, либо массив объектов:
client.hvals(obj.member, function (err, replies) { if (err) { return console.error("error response - " + err); }
console.log(replies.length + " replies:"); replies.forEach(function (reply, i) { console.log(" " + i + ": " + reply); }); });
Поскольку в Node функции обратного вызова используются повсеместно, а в Redis так много команд, которые просто отвечают подтверждением об успешности выполнения, модуль redis предоставляет метод redis.print, передаваемый в качестве последнего параметра:
client.set("somekey", "somevalue", redis.print);
Метод redis.print выводит на консоль либо ошибку, либо ответ и возвращает управление.
Теперь, разобравшись с работой модуля redis, пора испытать его в реальных приложениях.
Для того чтобы сайт был всегда в ТОП выдачи не обязательно платить и переплачивать, достаточно добавить сайт Добавить сайт бесплатно в трастовые каталоги в белые каталоги для быстрой индексации в поисковых системах, в специально написанном бесплатном модуле.
Если Вам был полезен этот материал и Вы бы хотели сохранить ссылку на своём сайте, просто скопируйте и установите этот баннер на сайте. Мы будем очень признательны.
Пример баннера
 |
Скопируйте код на свой сайт
|
|