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

Защо Redis с Total.js?

Redis предлага множество предимства, когато се използва заедно с рамката Total.js:

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

Сега нека се потопим в процеса на интеграция и да проучим някои практически случаи на употреба.

Инсталиране и настройка

Ние не покриваме как да инсталирате Redis сървъра в тази публикация в блога, но се уверете, че сте го инсталирали на вашия локален или отдалечен сървър. Току-що стигнах до тази „връзка към уебсайт“ на Redis и го инсталирах според вашата операционна система. След това изпълнете следните стъпки, за да интегрирате Redis с Total.js:

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

Преди да създадете проект за този урок, уверете се, че имате node.js v14 или по-стара версия, инсталирана на вашата машина. Това е достатъчно, за да започнете да създавате всичко, което искате с рамката 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 за задачи

Създайте /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, което ви позволява да създавате стабилни и високопроизводителни приложения. В част 2 ще разгледаме как да създадем множество Total.js приложения, които комуникират заедно благодарение на комуникационната система Redis Pub/Sub. Ние вземаме някои основни примери, но вие можете да настроите фино конфигурацията на Redis въз основа на вашите специфични изисквания и да оптимизирате използването й в рамките на вашия проект Total.js. Експериментирайте, изследвайте и използвайте потенциала на Redis за създаване на изключителни уеб приложения с Total.js начело.

Приятно кодиране!