[ASPNET] Proveedor de Session State con Azure Redis Cache: RedisSessionStateProvider

 

imageSi tienes una suscripción de Azure lo puedes utilizar ya que se encuentra en modo Preview. Esta en modo solo podemos tener dos cache por suscripción de Azure.

Hace un par de meses se lanzo, como se hizo largo el post lo divide en dos,

1) Proveedor de Session State con Azure Redis Cache: RedisSessionStateProvider
Que es el tema del presente articulo, que lo hice paso a paso… (asi también me queda de referencia)

2) Compartir Session entre diferentes app con RedisSessionStateProvider 

 

¿Qué es Redis?

“…Redis is an open source, BSD licensed, advanced key-value cache and store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets, sorted sets, bitmaps and hyperloglogs…”

SNAGHTML2ac0e196

Si quieres puedes darte una vuelta por temas:

Lo podemos utilizar como objeto Cache de nuestra app o también como proveedor de SessionState para ASP.NET

También claro, puedes descargar e instalar el Redis en tu servidor local y configurar la conexión, pero en este ejemplo veremos desde Azure.

Entonces aquí va los pasos para configurar…

 

Configurando Azure Redis Cache (Preview)

Para configurarlo en Azure, simplemente lo agregamos…  dentro de nuestro portal de Azure (que por cierto se renovó!)

SNAGHTML1efbfc9f

Una de las primeras configuraciones es el nombre DNS para el endpoint (por lo menos 6 caracteres y hasta 20)

SNAGHTML1efef444

Luego las opciones de costos! (mas info de precios… ), grupo de Recursos, cual suscripción utilizar y la localización de nuestra cache…

SNAGHTML1f1348cb

Creando….

image

 

Lo podremos ver en la sección de Cache (o pinneado en el panel principal)

SNAGHTML207494a4

SNAGHTML2075f1b4

 

Empezando a utilizarlo…

Para utilizarlo como objeto cache en nuestra app .NET debes utilizar el componente StackExchange.Redis (que lo puedes descargar desde NuGet)… puedes ver un articulo en MSDN aquí

Para mas conectores: http://redis.io/clients

Pero a lo que respecta este presente post… era el proveedor de Session State para ASP.NET (y para compartir entre varias aplicaciones)

 

Proveedor de estado de sesión de Azure Redis Cache (vista previa) para ASP.NET

Nuevamente en NuGet el paquete Microsoft.Web.RedisSessionStateProvider, pero por ahora lo debemos buscar como pre-release

SNAGHTML1f0f3b23

Hay una transformación del web.config que tiene la configuración para la sección sessionState, que sino la realizo al descargar el paquete deberias configurarla manualemente…  se encuentra dentro del paquete en la carpeta:

…packagesMicrosoft.Web.RedisSessionStateProvider.0.3.0.0-Pre-63contentnet40web.config.install.xdt

Que el contenido es el siguiente:

<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<sessionState mode="Custom" customProvider="MySessionStateStore" xdt:Transform="Replace">
<providers>
<!--
<add name="MySessionStateStore"
host = "127.0.0.1" [String]
port = "" [number]
accessKey = "" [String]
ssl = "false" [true|false]
throwOnError = "true" [true|false]
retryTimeoutInMilliseconds = "0" [number]
databaseId = "0" [number]
applicationName = "" [String]
connectionTimeoutInMilliseconds = "5000" [number]
operationTimeoutInMilliseconds = "5000" [number]
/>
-->
<add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider"
host="127.0.0.1"
accessKey=""
ssl="false" />
</providers>
</sessionState>
</system.web>
</configuration>
 
En nuestro caso quedaría en mi app demo de este modo configurada:
  • host: El nombre del endpoint configurado
  • port: El puerto (dependiendo si seleccionado en la propiedad ssl)
  • accessKey: alguna de las claves primera o secundaria (si quieres hacer porque hay dos key… )

    SNAGHTMLb9c2ea9

<sessionState mode="Custom"
customProvider="YodaNetAzureRedisCacheDemoProvider">
<providers>
<clear />
<add name="YodaNetAzureRedisCacheDemoProvider"
type="Microsoft.Web.Redis.RedisSessionStateProvider"
host="yodanet.redis.cache.windows.net"
port = "6379"
ssl="false"
accessKey="xxxxxxxxxxxxxxxx" />
</providers>
</sessionState>
 
Y ya tenemos disponible la session en Azure Redis

Algunos parámetros …

  • throwOnError: Arrojaun excepción por algún problema en nuestro proveedor, por default es true.
  • retryTimeoutInMilliseconds : Si hay una falla es el tiempo de “reintento”, por default es

    0

 

Y para compartir variables de Session entre diferentes app web a través de RedisSessionStateProvider ¿?

Algunas opciones anteriores salieron de este post

Pero darle una mirada al atributo applicationName de la configuración del session state del web.config)

  • applicationName: Para proveer de un grupo de ítems de cache (muy útil para transiciones de aplicaciones, o para compartir session entre aplicaciones)

    Pero en este caso otro post.

 

Recursos

Prueba Azure Free por 1 mes http://azure.microsoft.com/en-us/pricing/free-trial/

image

 

 

Enlaces

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *