Почему Redis (Nodejs) автоматически обновляет свой кэш после добавления нового элемента в базу данных? - PullRequest
0 голосов
/ 03 мая 2019

Я хотел поиграть с Redis, поэтому я написал простую конечную точку для выборки блогов и довольно скоро столкнулся с «сладкой проблемой», поскольку код работает, но я не знаю почему.

Идея состояла в том, чтобысохраняйте блоги в кеше после первоначального запроса, который вел себя как ожидалось, однако, насколько я понимаю, у меня должны были возникнуть проблемы после добавления нового блога, но я этого не сделал.Я опубликую код для более наглядного объяснения.

client.get = util.promisify(client.get);

    const cachedBlogs = await client.get(req.user.id);

    if (cachedBlogs) {
      return res.send(JSON.parse(cachedBlogs));
    }

    const blogs = await Blog.find({ _user: req.user.id });
    res.send(blogs);
    client.set(req.user.id, JSON.stringify(blogs));

Насколько я понимаю, с кешем все будет в порядке, пока я не опубликую новый блог, поскольку в этом сценарии cachedBlogs также будет равно true, но явернул бы только предыдущую версию кеша, так как мне никогда не удавалось сохранить новый блог в кеш.Проблема в том, что я вижу новый блог в кеше сразу после того, как добавляю его, и я не знаю почему, так как он всегда оканчивается на if statement, если кеш не пустой.

Так что более точный вопрос,Как Redis сохраняет новые данные в кеше, учитывая этот код?

1 Ответ

0 голосов
/ 04 мая 2019

Во-первых, я думаю, что автоматическое обновление невозможно.

Итак, вы можете добавить больше логов о redis и db; или вы можете отладить свой код. Вы найдете свою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...