Configuración de Azure Cache for Redis

Completado

El equipo de desarrollo de estadísticas deportivas ha decidido que el almacenamiento en caché puede mejorar de forma drástica el rendimiento de los datos solicitados recientemente. El siguiente paso es crear y configurar una instancia de Azure Cache for Redis.

Creación y configuración de una instancia de Azure Cache for Redis

Las instancias de Redis Cache se pueden crear desde Azure Portal, la CLI de Azure o Azure PowerShell. Tendrá que usar varios parámetros para configurar la caché y que se ajuste a los fines.

Nombre

La instancia de Redis Cache necesitará un nombre único global. El nombre debe ser único en Azure porque se usa para generar una dirección URL pública para conectarse y comunicarse con el servicio.

El nombre debe tener entre 1 y 63 caracteres, y debe contener números, letras y el carácter -. El nombre de la memoria caché no puede comenzar ni terminar por el carácter - y no se pueden usar varios caracteres - consecutivos.

Resource group

Azure Cache for Redis es un recurso administrado y necesita un propietario del grupo de recursos. Puede crear un grupo de recursos o usar uno que exista en una suscripción a la que tenga acceso.

Location

Tendrá que decidir dónde se ubicará físicamente la caché de Redis, para lo que seleccionará una región de Azure. La instancia de caché y la aplicación siempre deben colocarse en la misma región. El establecimiento de una conexión con una memoria caché de otra región puede aumentar considerablemente la latencia y reducir la confiabilidad. Si se va a conectar a la caché fuera de Azure, seleccione una ubicación cercana a la ubicación en que se ejecuta la aplicación que consume los datos.

Importante

Coloque la instancia de Redis Cache lo más cerca posible del consumidor de datos.

Plan de tarifa

Como se mencionó en la unidad anterior, hay tres planes de tarifa disponibles para Azure Cache for Redis.

  • Básico: la caché básica es ideal para desarrollo y pruebas. Tiene las limitaciones de un único servidor, 53 GB de memoria y 20 000 conexiones. No hay ningún Acuerdo de Nivel de Servicio para este nivel de servicio.
  • Estándar: caché de producción que admite la replicación e incluye un Acuerdo de Nivel de Servicio del 99,99 %. Admite dos servidores (principal/secundario) y tiene los mismos límites de memoria y conexiones que el nivel Basic.
  • Premium: nivel para empresa que se basa en el nivel estándar e incluye persistencia, agrupación en clústeres y compatibilidad con la memoria caché de escalabilidad horizontal. Premium es el nivel con el mayor rendimiento, con hasta 530 GB de memoria y 40 000 conexiones simultáneas.

Puede controlar la cantidad de memoria caché disponible en cada nivel; para ello, elija un nivel de caché entre C0 y C6 para los niveles Basic o Standard, y P0-P4 para Premium. Para más información, consulte la página de precios.

Sugerencia

Microsoft recomienda usar los niveles Estándar o Premium en sistemas de producción. El nivel Básico es un sistema de único nodo sin replicación de datos ni Acuerdo de Nivel de Servicio. Además, utilice al menos una caché de C1. Las cachés de C0 están diseñadas para escenarios de desarrollo y prueba sencillos, ya que tienen un núcleo de CPU compartido y muy poca memoria.

El nivel Premium ofrece dos maneras de conservar datos para proporcionar recuperación ante desastres:

  1. La persistencia de RDB toma una instantánea periódica y puede volver a generar la caché con ella en caso de error.

    Captura de pantalla de Azure Portal que muestra las opciones de persistencia de RDB en una nueva instancia de Redis Cache.

  2. La persistencia de AOF guarda cada operación de escritura en un registro que se guarda al menos una vez por segundo. AOF crea archivos de mayor tamaño que RDB, pero con una menor pérdida de datos.

    Captura de pantalla de Azure Portal en la que se muestran las opciones de persistencia de AOF en una nueva instancia de Redis Cache.

Hay otros valores que solo están disponibles en el nivel Premium.

Compatibilidad con redes virtuales

Si crea un instancia de Redis Cache de nivel Premium, puede implementarla en una red virtual en la nube. La caché estará disponible solo para otras máquinas virtuales y aplicaciones de la misma red virtual. La implementación en una red virtual proporciona un mayor nivel de seguridad cuando el servicio y la caché están hospedados en Azure o están conectados mediante una VPN de una red virtual de Azure.

Compatibilidad con la agrupación en clústeres

Con un instancia de Redis Cache de nivel Premium, puede implementar la agrupación en clústeres para dividir automáticamente el conjunto de datos entre varios nodos. Para implementar la agrupación en clústeres, especifique el número de particiones en un máximo de 10. El costo en que se incurre se obtiene multiplicando el costo del nodo original por el número de particiones.

Acceso a la instancia de Redis

Redis admite un conjunto de comandos conocidos. Los comandos se suele emitir como COMMAND parameter1 parameter2 parameter3.

Estos son algunos comandos comunes que puede usar:

Comando Descripción
ping Hace ping al servidor. Devuelve "PONG".
set [key] [value] Establece una clave o un valor en la memoria caché. Devuelve "OK" cuando la operación se realiza correctamente.
get [key] Obtiene un valor de la caché.
exists [key] Devuelve "1" si la clave existe en la memoria caché o "0" si no existe.
type [key] Devuelve el tipo asociado con el valor de la clave dada.
incr [key] Incremente el valor dado asociado con la clave en uno. El valor debe ser un número entero o un valor doble. Devuelve el nuevo valor.
incrby [key] [amount] Incremente el valor dado asociado con la clave en la cantidad especificada. El valor debe ser un número entero o un valor doble. Devuelve el nuevo valor.
del [key] Elimina el valor asociado con la clave.
flushdb Elimine todas las claves y valores de la base de datos.

Redis tiene una herramienta de línea de comandos (redis-cli) que se puede usar para experimentar directamente con estos comandos. Estos son algunos ejemplos.

> set somekey somevalue
OK
> get somekey
"somevalue"
> exists somekey
(string) 1
> del somekey
(string) 1
> exists somekey
(string) 0

Este es un ejemplo de cómo trabajar con los comandos INCR. Estos comandos son prácticos porque proporcionan incrementos atómicos en varias aplicaciones que usan la caché.

> set counter 100
OK
> incr counter
(integer) 101
> incrby counter 50
(integer) 151
> type counter
(integer)

Incorporación de un tiempo de expiración a los valores

El almacenamiento en caché es importante porque nos permite almacenar en la memoria los valores que se usan habitualmente. Pero también es preciso tener una forma de que los valores expiren cuando estén obsoletos. Para controlar la expiración, Redis aplica un período de vida (TTL) a una clave.

Cuando transcurre el TTL, la clave se elimina automáticamente, exactamente como si se hubiera emitido el comando DEL. Estas son algunas notas acerca de las expiraciones de TTL.

  • Las expiraciones se pueden establecer con una precisión de segundos o milisegundos.
  • La resolución de tiempo de expiración es siempre un milisegundo.
  • El tiempo pasa virtualmente, incluso cuando el servidor de Redis permanece detenido.
  • La información de expiración se replica y se conserva en el disco.
  • Redis guarda la fecha en la que expirará una clave.

Este es un ejemplo de una expiración:

> set counter 100
OK
> expire counter 5
(integer) 1
> get counter
100
... wait ...
> get counter
(nil)

Acceso a Redis Cache desde un cliente

Para conectarse a una instancia de Azure Cache for Redis, necesitará cierta información. Los clientes necesitan el nombre de host, puerto y una clave de acceso para la memoria caché. Esta información se puede recuperar en Azure Portal a través de la página Configuración > Claves de acceso.

  • El nombre de host es la dirección de Internet pública de la memoria caché, que se ha creado con el nombre de la memoria caché, por ejemplo, sportsresults.redis.cache.windows.net.

  • La clave de acceso actúa como contraseña de la caché. Hay dos claves creadas: principal y secundaria. Puede usar cualquiera de ellas y se proporcionan dos por si tiene que cambiar la clave principal. Puede cambiar todos los clientes a la clave secundaria y volver a generar la principal. Pero las aplicaciones que usen la clave principal original se bloquearán. Microsoft recomienda regenerar periódicamente las claves (con la frecuencia con que se cambian las contraseñas personales).

Advertencia

Las claves de acceso deben considerarse información confidencial y se deben tratar como una contraseña. Todos los que tengan una clave de acceso pueden realizar cualquier operación en la caché.