Tenemos muchos tipos de bases de datos en memoria, como MongoDB o RavenDB, aunque hay una de ellas que se emplea especialmente para labores de caché, y esa es Redis. En este artículo veremos algunas nociones de Redis así como su uso desde C#.
Sobre Redis
Redis no es, ni mucho menos, el último en llegar, de hecho se usa en portales como Pinterest, Twitter, Github y Stack Overflow. La base de datos se mantiene en memoria, con lo cual el acceso clave-valor para lectura y escritura son increiblemente rápidos.
Como en mi caso lo que necesitaba era una caché (de hecho no necesitaba ni siquiera que expirara) solamente necesitaba dos comandos: get y set. Las claves a usar son cadenas de texto (string), y los valores puede ser de tipo texto (string), listas o conjuntos de manera nativa.
La manera más sencilla de empezar a trabajar con Redis en Windows es a través de Chocolatey, una vez instalado solamente necesitamos.
cinst redis
Redis desde C#
Existe multitud de librerías que podemos usar para ello, siendo la más distribuida la de ServiceStack, que nos permite procesar un número máximo de 4000 peticiones por hora, ya que tiene soporte comercial.
Para agregar Redis a nuestra solución, lo más sencillo es a través de NuGet (disponemos además de una versión firmada por si nuestro proyecto lo requiere):
Install-Package ServiceStack.Redis
También podemos descargar la solución desde el repositorio de Github y construirla por nosotros mismos. Una vez instalada, si estamos trabajando desde el mismo ordenador donde hemos instalado redis, se conectará por defecto a localhost:6379, y podremos acceder mediante el siguiente código:
using ServiceStack.Redis; public class MyRedisHelper { private RedisClient redisClient; public MyRedisHelper() { //Por defecto, a localhost:6379 this.redisClient = new RedisClient(); } public void Set(string key, string value) { //Tanto el metodo get como set son genericos this.redisClient.Set<string>(key, value); } public string Get(string key) { this.redisClient.Get<string>(key); } }
Solamente con estas líneas de código, ya tenemos acceso a nuestra instalación de redis y podemos hacer uso de nuestra caché. En el caso de Set, podemos, como parámetro adicional, especificar una fecha de expiración o un tiempo máximo, por si necesitamos que los datos de nuestra caché sean volátiles.
Más información:
- Chocolatey
- Documentación el el Portal de redis
- Codigo fuente en el Repositorio de ServiceStack.Redis