Я пытаюсь создать приложение командной строки с помощью Node.js
Я использую кеш-узел для кэширования некоторых данных, которые поступают из вызовов API.
Однако когда я пытаюсь получить данные myCache.get( "key" )
, которые были предварительно установлены с помощью myCache.set( "key", data, 10000 );
он всегда возвращается undefined
.
Я думаю, проблема в том, что я запускаю приложение из командной строки. Я создаю объект кэша каждый раз, когда const myCache = new NodeCache();
,
Но без создания объекта кеширование не будет работать явно. Есть ли какая-нибудь работа для этого?
Используемая вами библиотека кеша хранит данные в памяти приложения. Поэтому, как только приложение выходит, кеш теряется.
В веб-приложении ситуация отличается от того, что приложение никогда не выходит (если оно не сработает), поэтому кеш остается с данными.
Один из способов решения этой проблемы - хранить кеш во внешнем хранилище, таком как Redis
(но для этого вам нужен сервер Redis) или, может быть, только в текстовом файле или SQLite db. Вам нужно либо написать простую библиотеку кеширования для этого, либо найти библиотеку, которая обеспечивает постоянное хранилище.
Обновление: быстрый поиск дает эту библиотеку: https://www.npmjs.com/package/cache-manager, я не использовал ее, но документы говорят, что она поддерживает различные хранилища для сохранения данных и node-cache-manager-fs
может быть хорошо для вашего дела.