Memoria un Acelerador de API
Estimada comunidad,
Quería comentarles que hoy publique en OpenExchange un acelerador de APIs muy simple de implementar (con algún parecido a Redis, pero más funcional) y con resultados bastante buenos, a continuación está la publicación del README, espero les sea de ayuda!
https://openexchange.intersystems.com/package/memoria
Memoria
Esta aplicación permite almacenar el resultado de una llamada a la API GET de forma permanente o por un periodo de tiempo, reduciendo los tiempos de respuesta al cliente final.
En el ejemplo a continuación se utiliza la API pública de Rick & Morty para realizar varias consultas al servidor. Cada consulta por sí sola y utilizando la conexión a internet del hogar demora alrededor de 300 ms. Al utilizar el acelerador el tiempo de respuesta es de alrededor de 7 ms.
Cliente
La clase memoria.client es la encargada de llamar al método MGet, este método ejecuta la llamada a la API externa pero primero valida si la información de esta API está cacheada en la tabla memoria.store, de ser así valida que esté dentro del Time to Live (TTL) configurado y retorna el dato, si el TTL ya expiró borra la información y genera la llamada, almacena el resultado y lo retorna al programa.

Para una API estática, es decir, lista de países, nombre de ciudades, etc., recomiendo usar TTL=0 para mantener la lista en la tienda.
Resultado de la API
En la primera llamada (cuadrado rojo en la parte superior), el tiempo de la llamada fue de 722 ms y en todas las demás llamadas, el tiempo fue de aproximadamente 7 ms, en este caso solo un 1 % del tiempo original.
Después de 10 segundos (valor TTL), el tiempo aumentó a 220 ms

Panel
El Panel es una pequeña aplicación que le permite administrar los datos almacenados en caché y eliminarlos si es necesario.

Comments
Gracias por compartirlo, Joel