Redis, хранилище структур данных в памяти с открытым исходным кодом, широко известно благодаря своим высокопроизводительным возможностям и универсальности в обработке данных. В сочетании с Total.js, мощной средой веб-приложений Node.js, он может повысить производительность и масштабируемость вашего проекта. В этом сообщении блога мы рассмотрим интеграцию Redis с Total.js и рассмотрим практические примеры, чтобы продемонстрировать, как эта комбинация может поднять ваши проекты веб-разработки на новую высоту.

Почему Redis с Total.js?

Redis предлагает множество преимуществ при использовании в сочетании с платформой Total.js:

  1. Кэширование. Redis служит отличным решением для кэширования, позволяя хранить часто используемые данные в памяти, что сокращает время отклика и снижает нагрузку на базу данных.
  2. Управление данными в режиме реального времени: Redis поддерживает функции публикации/подписки, что позволяет эффективно обрабатывать данные в режиме реального времени и упрощает реализацию таких функций, как уведомления в реальном времени, приложения чата и многое другое.
  3. Очереди: Redis включает надежный механизм очередей, позволяющий эффективно управлять фоновыми задачами, асинхронно обрабатывать задания и создавать масштабируемые системы.

Теперь давайте углубимся в процесс интеграции и рассмотрим некоторые практические варианты использования.

Установка и настройка

Мы не рассказываем, как установить сервер Redis в этом сообщении блога, но убедитесь, что он установлен на вашем локальном или удаленном сервере. Просто перейдите по этой ссылке на веб-сайт Redis и установите ее в соответствии с вашей операционной системой. Затем выполните следующие действия, чтобы интегрировать Redis с Total.js:

Настройте простой проект Total.js.

Прежде чем создавать проект для этого руководства, убедитесь, что на вашем компьютере установлен node.js версии 14 или более ранней. Этого достаточно, чтобы начать создавать что угодно с помощью фреймворка Total.js. Затем нам нужно открыть ваш терминал и ввести следующие команды:

# create folder and move into it
$ mkdir todoapp && cd todoapp 
# init project with npm
$ npm init -y
# install total.js and redis client
$ sudo npm install total4 redis

Теперь вы можете открыть проект в своем любимом редакторе кода. В моем случае я использую VSCode.

Создайте основной файл записи (index.js)

Создайте файл .js в корне вашего приложения. Имя файла записи приложения обычно представляет собой файл index.js, но вы можете назвать его как хотите! Важно то, что он понадобится вам для запуска сервера разработки вашего приложения. После того, как вы его создали, необходимо поставить следующий простой стартовый скрипт:

require('total4/debug')({ port: 5000 });

Этой одной строки кода достаточно, чтобы запустить сервер в режиме отладки (разработки)!
Затем вы вводите в терминале следующее, чтобы запустить его:

$ node index.js

Результат этого будет выглядеть следующим образом:

Создание конечных точек API todo

Создайте файл /controllers/api.js, чтобы определить конечные точки вашего приложения.

exports.install = function () {
    //  Http_method    Uri           *Schema_name  --> action_name
    ROUTE('GET         /todos/list/          *Todos   --> list');                    
    ROUTE('POST        /todos/create/        *Todos   --> create');                   
    ROUTE('GET         /todos/toggle/{id}/   *Todos   --> done');
}

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

Создайте файл /schemas/todos.js для определения вашей схемы Todos с тремя действиями, в которых мы создадим соответствующий

NEWSCHEMA('Todos', function(schema) {
    schema.action('list', {
        name: 'List todos',
        query: 'search:String',
        action: async function($) {
            // get list from redis cache if exists. Otherwise, get it form database
        }
    });
    schema.action('create', {
        name: 'Create new todo',
        input: '*name:String,description:String,isdone:Boolean',
        action: function($, model) {
            // insert action and publish
        }
    });
    schema.action('done', {
        name: 'Toggle complete/uncomplete status of todo',
        params: '*id:String',
        action: function($) {
            // toggle task complete/uncomplete and publish
        }
    })
});

Кэширование данных

Кэшировать данные в Redis Server в Total.js очень просто. Возьмем пример с действием list. Пробуем брать данные из кеша Redis, если данные не найдены то берем из базы. Но мы не забываем помещать эти данные в кеш Redis. Таким образом, мы можем обновить наше действие list в /schemas/todos.js следующим образом:

schema.action('list', {
        name: 'List todos',
        query: 'search:String',
        action: async function($) {
            var list = await MAIN.redis.get('todoslist');
            if (list)
                $.callback(JSON.parse(list));
            else {
                var builder = DB().find('nosql/todos');
                builder.autoquery($.query,'id:String,name:String,description:String,isdone:Boolean,dtcreated:Date,dtupdated:Date', 'dtcreated_desc', 100);
                $.query.search && builder.search('search', $.query.search);
                builder.where('isremoved', false);
                builder.sort('dtcreated', true);
                builder.callback(function(err, response) {
                    if (err) {
                        $.invalid(err.toString());
                        return;
                    }
                    MAIN.redis.set('todoslist', JSON.stringify(response));
                    $.callback(response);
                })
            }
        }
    });

Интеграция Redis с платформой Total.js обеспечивает мощную комбинацию, которая может значительно повысить производительность, масштабируемость и возможности работы в реальном времени ваших веб-приложений. Функции кэширования, управления сеансами и организации очередей Redis легко интегрируются с Total.js, позволяя создавать надежные и высокопроизводительные приложения. Во второй части мы рассмотрим, как создать несколько приложений Total.js, которые взаимодействуют друг с другом благодаря системе связи Redis Pub/Sub. Мы берем несколько базовых примеров, но вы можете точно настроить конфигурацию Redis в соответствии со своими конкретными требованиями и оптимизировать ее использование в своем проекте Total.js. Экспериментируйте, исследуйте и используйте потенциал Redis для создания исключительных веб-приложений с Total.js во главе.

Удачного кодирования!