Si 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…”
Si quieres puedes darte una vuelta por temas:
- http://azure.microsoft.com/en-us/services/cache/
- Documentación
http://azure.microsoft.com/en-us/documentation/services/cache/
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ó!)
Una de las primeras configuraciones es el nombre DNS para el endpoint (por lo menos 6 caracteres y hasta 20)
Luego las opciones de costos! (mas info de precios… ), grupo de Recursos, cual suscripción utilizar y la localización de nuestra cache…
Creando….
Lo podremos ver en la sección de Cache (o pinneado en el panel principal)
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
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>
- 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… )
<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>
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/