Приложение Node / Express для запроса стороннего API и сохранения ответа в memcache / redis в течение 30 минут для будущих запросов - PullRequest
0 голосов
/ 27 ноября 2018

Общий запрос здесь с точки зрения структуры приложения.По сути, у меня есть SPA, который я нацелен на отображение шансов от стороннего API.

Чтобы уменьшить нагрузку на этот API, я хотел бы создать промежуточное программное обеспечение узла / экспресса, чтобы запросы сначала проверяликэш memcache / redis и, если кешировано, и то же значение, возвращают данные, если не кешируются, затем нажимают API и возвращают ответ, добавляя в кеш для будущих запросов в течение периода времени X. (не уверен, если мне понадобитсяфактическая база данных, такая как mongodb для работы с кешем)

Ключевой момент, которого я хотел бы достичь, - это кэширование, так как я хочу избежать того, чтобы API отвечал, если данные одинаковы, следовательно, кеш,

Полагаю, мой вопрос здесь заключается в том, имеет ли смысл приведенный выше сценарий или я слишком усложняю его еще до того, как начать?

Извинения за любые ошибки, Back-end и кэширование для меня очень ново.

Заранее спасибо

1 Ответ

0 голосов
/ 27 ноября 2018

Идея состоит в том, чтобы сначала проверить, что данные находятся в кеше, если нет, затем извлечь из API и записать в кеш.

Вот пример реализации с redis и request

function getThirdParty(req,res){

    //unique identifier for the cache 
    const redisKey = req.body.key 

    //check the result is in cache
    client.getAsync(redisKey).then(function(result) {
       if(result){ 
           res.json({
               result:result,
               cache:true
           })
     }else{
        //not in cache made the api request 
        request('http://www.thirdpartyapi.com', function (error, response, body) {
        //set the api  result in cache   
        client.set(redisKey,body);

            res.json({
                result:body,
                cache:false
            })
     });
    }
 });
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...