Casos de ElastiCache uso comunes y cómo ElastiCache pueden ayudar - Amazon ElastiCache

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Casos de ElastiCache uso comunes y cómo ElastiCache pueden ayudar

Tanto si se trata de la publicación de las últimas noticas, de una tabla de clasificación Top 10, de un catálogo de productos o de la venta de entradas para un espectáculo, la velocidad es un factor clave a tener en cuenta. El éxito de su sitio web y de su negocio depende considerablemente de la rapidez con la que se entrega el contenido.

En el artículo del New York Times “For Impatient Web Users, an Eye Blink Is Just Too Long to Wait” (Para un usuario impaciente de Internet, un abrir y cerrar de ojos ya es esperar demasiado), se observó que los usuarios pueden percibir una diferencia de 250 milisegundos (1/4 de segundo) entre los sitios competidores. Los usuarios suelen descartar el sitio más lento en favor del más rápido. Las pruebas realizadas en Amazon, citadas en How Webpage Load Time Is Related to Visitor Loss (Relación entre el tiempo de carga de la página web y la pérdida de visitantes), revelaron que por cada incremento de 100 ms (1/10 de segundo) de tiempo de carga, las ventas disminuían un 1 %.

Si alguien necesita tener acceso a estos datos, puede entregar esos datos mucho más rápido si se almacenan en caché. Eso es cierto, independientemente de si se trata de una página web o de un informe que impulsa las decisiones empresariales. ¿Puede su negocio permitirse no almacenar en caché sus páginas web con el fin de ofrecerlas con la menor latencia posible?

Puede parecer intuitivamente evidente que desee almacenar en caché los elementos más solicitados. Pero ¿por qué no en almacenar en la caché los elementos solicitados con menos frecuencia? Incluso la consulta a la base de datos o la API llamada remota más optimizadas son notablemente más lentas que recuperar una clave simple de una caché en memoria. El concepto de notablemente más lento suele mandar a los clientes a otro sitio.

Los siguientes ejemplos ilustran algunas de las formas en que el uso ElastiCache puede mejorar el rendimiento general de la aplicación.

Almacenamiento de datos en memoria

El propósito principal del almacenamiento en memoria de pares clave-valor es proporcionar un acceso ultrarrápido (latencia de milisegundos) y económico a las copias de datos. La mayoría de almacenes de datos tienen áreas de datos a los que se accede con frecuencia, pero que raramente se actualizan. Además, la consulta de una base de datos siempre será más lenta y más cara que la localización de una clave en una caché de par clave-valor. Algunas consultas de base de datos son especialmente costosas de realizar. Por ejemplo, las consultas que implican uniones entre varias tablas o las consultas con cálculos intensivos. Al almacenar en caché resultados de una consulta de este tipo, solo pagará el precio de la consulta una vez. A continuación, puede recuperar rápidamente los datos varias veces sin tener que volver a ejecutar la consulta.

¿Qué debo almacenar en caché?

A la hora de decidir qué datos almacenar en caché, tenga en cuenta estos factores:

Velocidad y gastos: siempre es más lento y más caro adquirir los datos de una base de datos que de una caché. Algunas consultas de base de datos son intrínsecamente más lentas y más caras que otras. Por ejemplo, las consultas que realizan uniones en varias tablas son mucho más lentas y más caras que las consultas sencillas en una única tabla. Si los datos interesantes que se desean adquirir requieren una consulta lenta y cara, son un candidato para el almacenamiento en caché. Si la adquisición de los datos requiere una consulta relativamente rápida y sencilla, puede ser un candidato para el almacenamiento en caché, en función de otros factores.

Patrón de datos y acceso: determinar qué almacenar en caché también implica comprender los datos en sí y sus patrones de acceso. Por ejemplo, no tiene sentido almacenar en caché los datos a los que se accede raramente o que cambian rápidamente. Para que el almacenamiento en caché proporcione un beneficio real, los datos deben ser relativamente estáticos y el acceso a estos debería ser frecuente. Un ejemplo es un perfil personal en un sitio de redes sociales. Por otro lado, no deseará almacenar en caché datos si dicho almacenamiento no supone ventajas de velocidad o costos. Por ejemplo, no tiene sentido almacenar en caché páginas web que devuelven los resultados de búsqueda, ya que estas consultas y sus resultados suelen ser únicos.

Estancamiento: por definición, los datos almacenados en caché son datos obsoletos. Incluso si en ciertas circunstancias no se encuentran obsoletos, siempre deben considerarse y tratarse como obsoletos. Para determinar si sus datos son un candidato para el almacenamiento en caché, debe evaluar la tolerancia de su aplicación a los datos obsoletos.

Es posible que la aplicación sea capaz de tolerar datos obsoletos en un contexto, pero no en otro. Por ejemplo, suponga que su sitio web sirve a un precio bursátil. Sus clientes podrían aceptar cierto estancamiento con una exención de responsabilidad de que los precios podrían tener un retraso de n minutos. Sin embargo, si presenta ese precio a un agente que realiza una venta o una compra, deseará tener datos en tiempo real.

Considere la posibilidad de almacenar en caché los datos si:

  • Resultan lentos o caros de adquirir en comparación con la recuperación en caché.

  • Los usuarios acceden a sus datos con frecuencia.

  • Sus datos se mantienen relativamente iguales, o si cambian con rapidez, el estancamiento no es un problema importante.

Para obtener más información, consulte Estrategias de almacenamiento en caché para Memcached

Tablas de clasificación de juegos

Con los conjuntos OSS ordenados de Valkey o Redis, puede trasladar la complejidad computacional de las tablas de clasificación de su aplicación a su clúster.

Las tablas de clasificación, como las de 10 mejores puntuaciones de un juego, son complejas en términos informáticos. Esto es especialmente cierto cuando hay un gran número de jugadores simultáneos y las puntuaciones cambian de forma constante. Los conjuntos OSS ordenados de Valkey y Redis garantizan tanto la unicidad como el orden de los elementos. Con los conjuntos ordenados, cada vez que se añade un nuevo elemento al conjunto ordenado, se vuelve a clasificar en tiempo real. A continuación, se agrega al conjunto en el orden numérico correcto.

En el siguiente diagrama, puedes ver cómo funciona una tabla de clasificación de ElastiCache juegos.

Imagen: diagrama de la tabla ElastiCache de clasificación de juegos
ejemplo Tabla de clasificación de Valkey o Redis OSS

En este ejemplo, cuatro jugadores y sus puntuaciones se introducen en una lista ordenada mediante ZADD. El comando ZREVRANGEBYSCORE muestra a los jugadores por su puntuación, de más alta a más baja. A continuación, ZADD se utiliza para actualizar la puntuación de June, sobrescribiendo la entrada existente. Por último, ZREVRANGEBYSCORE muestra a los jugadores por su puntuación, de más alta a más baja. La lista muestra que June ha ascendido en la clasificación.

ZADD leaderboard 132 Robert ZADD leaderboard 231 Sandra ZADD leaderboard 32 June ZADD leaderboard 381 Adam ZREVRANGEBYSCORE leaderboard +inf -inf 1) Adam 2) Sandra 3) Robert 4) June ZADD leaderboard 232 June ZREVRANGEBYSCORE leaderboard +inf -inf 1) Adam 2) June 3) Sandra 4) Robert

El siguiente comando permite a June conocer dónde se sitúa entre todos los jugadores. Debido a que la clasificación se basa en cero, ZREVRANKarroja un 1 para June, que se encuentra en segunda posición.

ZREVRANK leaderboard June 1

Para obtener más información, consulta la documentación de Valkey sobre conjuntos ordenados.

Mensajería (Pub/Sub)

Al enviar un mensaje de correo electrónico, lo envía a uno o a varios destinatarios especificados. En el paradigma OSS pub/sub de Valkey y Redis, se envía un mensaje a un canal específico sin saber quién lo recibe, si es que lo recibe alguien. Las personas que reciben el mensaje son aquellas que se encuentran suscritas al canal. Por ejemplo, suponga que se suscribe al canal news.sports.golf. Usted y todos los demás que se hayan suscrito al canal news.sports.golf recibirán todos los mensajes que se publiquen en news.sports.golf.

La funcionalidad Pub/sub no tiene relación con ningún espacio clave. Por lo tanto, no interferirá en ningún nivel. En el siguiente diagrama, puede encontrar una ilustración de la ElastiCache mensajería con Valkey y Redis. OSS

Imagen: diagrama de mensajería ElastiCache

Suscripción

Para recibir mensajes en un canal, debe suscribirse a dicho canal. Puede suscribirse a un solo canal, a varios canales especificados o a todos los canales que coincidan con un patrón. Para cancelar una suscripción, debe cancelar la suscripción al canal especificado en el momento de la suscripción. O bien, si se ha suscrito mediante la coincidencia de patrones, anula la suscripción con el mismo patrón que utilizó antes.

ejemplo - Suscripción a un único canal

Para suscribirse a un solo canal, utilice el SUBSCRIBE comando que especifica el canal al que desea suscribirse. En el siguiente ejemplo, un cliente se suscribe al canal news.sports.golf.

SUBSCRIBE news.sports.golf

Transcurrido un tiempo, el cliente cancela su suscripción al canal mediante el UNSUBSCRIBE comando que especifica el canal del que quiere darse de baja.

UNSUBSCRIBE news.sports.golf
ejemplo - Suscripciones a varios canales especificados

Para suscribirse a varios canales específicos, enumere los canales con el SUBSCRIBE comando. En el siguiente ejemplo, un cliente se suscribe a los canales news.sports.golf, news.sports.soccer y news.sports.skiing

SUBSCRIBE news.sports.golf news.sports.soccer news.sports.skiing

Para cancelar una suscripción a un canal específico, usa el UNSUBSCRIBE comando y especifica el canal del que deseas cancelar la suscripción.

UNSUBSCRIBE news.sports.golf

Para cancelar las suscripciones a varios canales, usa el UNSUBSCRIBE comando y especifica los canales de los que deseas cancelar la suscripción.

UNSUBSCRIBE news.sports.golf news.sports.soccer

Para cancelar todas las suscripciones, utilice UNSUBSCRIBE y especifique cada canal. O utilice UNSUBSCRIBE y no especifique un canal.

UNSUBSCRIBE news.sports.golf news.sports.soccer news.sports.skiing

o

UNSUBSCRIBE
ejemplo - Suscripciones mediante la coincidencia de patrones

Los clientes pueden suscribirse a todos los canales que coincidan con un patrón mediante el PSUBSCRIBE comando.

En el siguiente ejemplo, un cliente se suscribe a todos los canales de deportes. No enumera todos los canales de deportes de manera individual, como se haría con SUBSCRIBE. En su lugar, con el comando PSUBSCRIBE, se utiliza la coincidencia de patrones.

PSUBSCRIBE news.sports.*
ejemplo Cancelación de suscripciones

Para cancelar las suscripciones a estos canales, utilice el comando PUNSUBSCRIBE.

PUNSUBSCRIBE news.sports.*
importante

La cadena de canales enviada a un SUBSCRIBE comando [P] y al UNSUBSCRIBE comando [P] debe coincidir. No puede PSUBSCRIBE a news.* y PUNSUBSCRIBE de news.sports.* o UNSUBSCRIBE de news.sports.golf.

Publicación

Para enviar un mensaje a todos los suscriptores de un canal, utilice el comando PUBLISH y especifique el canal y el mensaje. En el siguiente ejemplo, se publica el mensaje: “It’s Saturday and sunny. I’m headed to the links” (Es sábado y está soleado. Vayamos directamente a los enlaces). en el canal news.sports.golf.

PUBLISH news.sports.golf "It's Saturday and sunny. I'm headed to the links."

Un cliente no puede publicar en un canal al que esté suscrito.

Para obtener más información, consulta Pub/Sub en la documentación de Valkey.

Datos de recomendación (hashes)

El uso de INCR o DECR en Valkey o Redis OSS simplifica la compilación de recomendaciones. Cada vez que un usuario da un “me gusta” a un producto, aumenta un contador item:productID:like. Cada vez que un usuario da un “no me gusta” a un producto, aumenta un contador item:productID:dislike. Al usar hashes, también puedes mantener una lista de todas las personas a las que les ha gustado o no un producto.

ejemplo - Me gusta y no me gusta
INCR item:38923:likes HSET item:38923:ratings Susan 1 INCR item:38923:dislikes HSET item:38923:ratings Tommy -1

ElastiCache Testimonios de clientes

Para obtener más información sobre cómo empresas como AirbnbPBS, Esri y otras utilizan Amazon ElastiCache para hacer crecer sus negocios con una mejor experiencia de cliente, consulta Cómo utilizan Amazon ElastiCache otros usuarios.

También puedes ver los vídeos tutoriales para ver otros casos de uso de los ElastiCache clientes.