Использование Redis в Node.js

Использование Redis в Node.js
5 (100%) 4 votes

В предыдущем статье я рассказал, как можно установить Redis на операционную систему Linux. Сегодня я вкратце расскажу — что такое Redis, какие типы данных существует, как и где данные хранятся, будем выполнять базовые операции.

Что такое Redis

Redis — это высокопроизводительная key-value хранилище данных. Все данные хранятся в оперативной памяти. Также, по мере необходимости данные дублируются на физический носитель. После сбоев или перезагрузки сервера Redis читать данные с диска. Используя Redis, мы получаем хранилище данных, которые хранятся в оперативной памяти, и после сбоев или перезагрузки сервера мы не теряем эти данные.

Сохранение данных на физический диск можно настроить двумя способами:

  1. через определенный промежуток времени он сохранял данные на диск;
  2. после определенное количество атомарных изменений он сохранял данные на диск.

Redis обладает такими возможностями и механизмы, как журналирование, снимки, поддержка работы с такими данными, для каждого из которых существует свой набор команд, транзакции, неблокирующая master-slave репликация на несколько узлов, подтяжка использование нескольких БД, с возможностью атомарного переноса ключей между ними, Pipeline (отправка на выполнение набора команд и отложенное получение ответа).

Типы данных Redis

  • Строки (String) Базовый тип данных Redis. Строки в Redis бинарно-безопасны, могут использоваться так же как числа.
  • Списки (List) — Классические списки строк, упорядоченные в порядке вставки, которая возможна как со стороны головы, так и со стороны хвоста списка.
  • Множества (Set) — Множества строк в математическом понимании: не упорядочены, поддерживают операции вставки, проверки вхождения элемента, пересечения и разницы множеств.
  • Хеш-таблицы (Hash) — Классические хеш-таблицы или ассоциативные массивы.
  • Упорядоченные множества (Sorted Sets) — Упорядоченное множество отличается от обычного тем, что его элементы упорядочены по особому параметру «score».

Обычно стандартные key-value хранилищи позволяют работать только с ключами. Но Redis нарушает эти принципы. Для каждого типа содержимое у него своя логика работы и набор команд.

Redis и Node.js — Модуль Redis для Node.js




Для работы с Redis v Node.js нам нужно установить модуль redis:

npm install redis

А теперь, давайте подключаем модуль и начнем работу с ним.

// Подключаем модуль
const redis  = require("redis");
// Создаем клиента
const client = redis.createClient();

// Выбираем базу данных
client.select(0, ( ) => {
    client.on("error", (err) =>  {
        console.log("Error " + err);
    });

    // .......

    client.quit( );
});

После подключение модуля и создание redis-клиента мы выбрали базу данных — 0. Но в данном случае это лишний шаг, по умолчанию используется база 0.

После выбора базы данных можно работать с Redis — записать данные в базу, получить и удалить данные с базы.

const redis  = require("redis");
const client = redis.createClient();

client.select(0, ( ) => {
    client.on("error", (err) =>  {
        console.log("Error " + err);
    });

    // Запись данных
    client.set("string_key", "string value", redis.print);

    // Получение данных
    client.get("string_key", (err, data) => {
        if(err) console.log(err);

        console.log(data);
    });

    client.quit( );
});

С помощью метода set объекта client записать данные в виде «Ключ — Значение», а с помощью метода get мы получаем данные по ключу.

Также, мы можем удалить данные по ключу с помощью метода del:

client.del("string_key", (err) => {
    if(err) console.log(err);
});

Данный модуль поддерживает все команды Redis. Например, мы с помощью одной команды можем одновременно работать с множеством ключей и значение.

client.mset(
    "string_key_1", "string value 1",
    "string_key_2", "string value 2",
    "string_key_3", "string value 3",
    "string_key_4", "string value 4",
    (err, result) => {
        if(err) console.log(err);

        console.log(result);
    }
);

В следующем статье я покажу, как на Node.js можно создать модель для Redis.


Об авторе

Занимаюсь программированием уже более 7 лет. Часто использую JavaScript (Node.js) и Python.

Комментарии