Tengo el siguiente código en AWS lambda:
const cache = {}; exports.handler = async (event) => { // TODO implement if (cache[event.key]) { console.log('read from cache'); return cache[event.key]; } console.log('generate value'); cache[event.key] = Math.random() return cache[event.key]; }; cuando ejecuto la lambda y puedo ver la read from cache en el registro, lo que significa que la lambda almacena en caché algunos valores en la memoria caché. ¿La lambda persiste en su memoria cuando se calienta? ¿Significa que puedo hacer uso de esta memoria para algo de almacenamiento en caché a fin de mejorar el rendimiento?
Es posible persistir cosas entre las invocaciones de Lambda (suponiendo que las invocaciones lleguen a la misma MicroVM), pero su aplicación no debe depender de ella para el rendimiento.
No hay garantía de cuánto tiempo persistirá en MicroVM, también tenga en cuenta el volumen que almacena en la memoria, ya que esto puede afectar el rendimiento de su Lambda si no hay suficiente memoria disponible para él. Si está buscando mejorar el rendimiento, eche un vistazo a algunas de estas opciones:
El contenedor Lambda permanece vivo incluso después de que se completa la invocación. Por lo tanto, todos los datos cargados en la memoria del contenedor estarán disponibles durante todo el ciclo de vida del contenedor de Lambda.
Por lo tanto, esta memoria se puede utilizar como palanca para el almacenamiento en caché.
Los datos en el caché serían útiles si su aplicación es de lectura extensiva. Por ejemplo, en un caso en el que el mismo nombre de usuario debe obtenerse de la base de datos, podemos almacenar en caché el nombre de usuario para futuras invocaciones. Por lo tanto, mitigar el costo de la consulta DB.
El enfoque anterior parece ayudar, pero también hay algunas desventajas: