2013-03-25 12 views
15

Sto usando node.js per scrivere un servizio Web, esso chiama un'API per alcuni dati ma sono limitato dall'API a un numero di chiamate al mese, quindi desidero per memorizzare nella cache i dati recuperati dall'API in modo da poterli pubblicare con i dati memorizzati nella cache e recuperare i dati dall'API a intervalli temporizzati.Un modo corretto di memorizzare dati dalla chiamata API con nodejs

È un buon approccio per questo problema? E quale framework di caching dovrei usare? Ho esaminato i redis del nodo, ma non penso che un archivio di valori chiave sia appropriato per i dati.

Grazie!

+1

So che questo è vecchio, ma solo curioso - quale libreria stai usando nel nodo per le tue chiamate http? – jpodwys

+1

Se stai usando l'eccellente libreria superagent per le tue chiamate API dal nodo, considera la cache superagent. È possibile ottenere il caching redis direttamente nelle query superagenti. Disclaimer: Ho scritto superagent-cache. – jpodwys

risposta

30

Non sarei d'accordo con te per quanto riguarda Redis. Redis è un potente negozio di valore-chiave che può essere facilmente utilizzato per quello che vuoi. È progettato per avere roba scaricata e ritirata. Nella tua situazione, puoi facilmente memorizzare nella cache la risposta dell'API salvandola in Redis con la query come chiave (se questa è un'API REST che stai chiamando, puoi semplicemente utilizzare l'URL o i dati serializzati come chiave) e semplicemente memorizzare nella cache la risposta come oggetto JSON con stringhe (o stringa XML se ti capita di averlo).

È anche possibile impostare una scadenza sui dati memorizzati nella cache e verrà cancellata quando il tempo è scaduto.

Si potrebbe quindi avvolgere la chiamata API in una funzione di supporto che controlla la cache e restituisce il valore se è presente. Se non lo è, fa la richiesta API, la aggiunge alla cache, quindi la restituisce.

Questa è probabilmente la soluzione più semplice e sembra coprire abbastanza bene il caso d'uso.

+0

Grazie mille per la risposta! Non ho familiarità con i redis da qui la mia valutazione iniziale. Quello che hai scritto ha senso e userò questa soluzione per il mio servizio web. –

+2

Ciò eviterà anche il recupero dei dati memorizzati nella cache fino a quando non è effettivamente necessario, anziché eseguirlo in un intervallo indipendentemente dal fatto che venga utilizzato come suggerito dalla domanda. –

+0

Questa è davvero una buona risposta per la domanda, hai familiarità con qualche tipo di tutorial o un codice di esempio su come utilizzare questa configurazione nel nodo? –

Problemi correlati