Я хотел поиграть с 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 сохраняет новые данные в кеше, учитывая этот код?