2012-01-30 60 views
13

Tengo algunos datos tabulares que, debido a problemas no relacionados, resultan demasiado lentos para salir de SQL Server en tiempo real. A medida que recibamos más usuarios, esto solo empeorará, así que estoy pensando en usar Redis como un caché de entrada para almacenar los datos tabulables de los usuarios de la página.¿Cómo debo usar Redis como caché para SQL Server?

Esta información podría volverse obsoleta después de unos 10 minutos, después de lo cual me gustaría volver a configurar el registro y ponerlo en Redis.

La aplicación es .NET MVC. Estaba pensando que cuando el usuario inicia sesión en la aplicación, estos datos se extraen de la base de datos (demoran alrededor de 10 segundos) y se envían a Redis listos para ser consumidos por el cliente MVC. Yo pondría un vencimiento en esa información y luego, cuando se vuelva obsoleta, se volverá a recopilar de la base de datos de SQL Server.

¿Esto suena razonable? Estoy un poco asustado de que:

  1. El usuario podría llegar a la página antes de los datos están en Redis
  2. Si Redis se cae o no responde necesito para asegurar que el modelo de vista puede quedar lleno directa desde SQL SErver sin que Redis esté allí
+1

Victoria, puede encontrar [esta publicación] (http://www.brentozar.com/archive/2011/11/how-stackoverflow-scales-sql-server-video/) interesante. Alrededor del minuto 15 muestra un posible enfoque para integrar a Redis. – uvita

+0

gracias voy a echar un vistazo – Victoria

+1

@uvita puede agregar esto como una respuesta, ya que me gustaría aceptarlo - es la solución perfecta que estaba buscando – Victoria

Respuesta

1

Puede usar algo como MemcacheD para almacenar páginas en caché en la memoria.

Puede establecer una validez de 10 minutos en un objeto en caché. Después de eso, la memoria caché eliminará automáticamente el objeto.

su repositorio real tendría que hacer estos pasos:
1. Compruebe la caché para los datos que desea, si está allí, gran uso que
2. Si no existe la caché de datos, vaya a Servidor SQL para recuperarlo
3. Actualice la caché con los datos devueltos por el servidor SQL

He usado anteriormente el cliente Enyim. Funciona muy bien. https://github.com/enyim/EnyimMemcached

También podría utilizar algo como Quartz para programar una tarea en segundo plano para preparar el caché. http://quartznet.sourceforge.net/

+0

Me gusta tu idea de Redis como un caché también. La implementación de Redis sería muy similar a Memcached ... algunas personas dicen que es igual de rápido o más rápido y tiene más funciones. Simplemente no puedo recomendarlo porque nunca he trabajado con él fuera de algunas aplicaciones demo de NodeJS –

3

Iré por la implementación del Service stack redis, here son todos los detalles requeridos. Redis es particularmente bueno cuando se hace caching en comparación con otros nosql. Pero si tiene una alta aplicación de lectura y escritura, insistiré en consultar la base de datos nosql como base de datos combinada con el servidor SQL. Eso ayudará en caso de escalabilidad.

Por favor, hágamelo saber si necesita más información. Solo necesitas disparar el comando nuget y ya casi estás en funcionamiento.

Cuestiones relacionadas