Redis

software de gestión de bases de datos NoSQL


Redis es un motor de base de datos en memoria, basado en el almacenamiento en tablas de hashes (clave/valor) pero que opcionalmente puede ser usada como una base de datos durable o persistente. Está escrito en ANSI C por Salvatore Sanfilippo, quien es patrocinado por Redis Labs. Es distribuido bajo un modelo de licencias dual: RSALv2 y SSPLv1[1].

Redis
Información general
Tipo de programa Base de datos clave-valor
Autor Salvatore Sanfilippo
Desarrollador Salvatore Sanfilippo
Lanzamiento inicial 10 de abril de 2009
Licencia RSALv2 y SSPLv1
Estado actual activo
Idiomas Inglés
Información técnica
Programado en ANSI C
Versiones
Última versión estable 7.2.49 de enero de 2024
Enlaces

Historia editar

El desarrollo de Redis comenzó a principios de 2009 por Salvatore Sanfilippo para mejorar los tiempos de respuesta de un producto llamado LLOGG. El programa fue ganando popularidad, hasta que en marzo del 2010 la empresa VMWare contrató a Salvatore para trabajar a tiempo completo en Redis.[2][3]​ Poco después, VMWare contrató también a otro de los principales desarrolladores de Redis, Pieter Noordhuis. Entre mayo de 2013 y julio de 2015 Salvatore Sanfilippo fue patrocinado por Pivotal Software. A partir de esta fecha es patrocinado por Redis Labs.[4][5]

Lenguajes soportados editar

Desde la versión 2.6 el servidor de Redis incorpora un interpretador de Lua.

Los lenguajes de programación que soportan Redis en el cliente son:[6]ActionScript, C, C++, Jeliot,C#, Clojure, Common Lisp, Erlang, Go, Haskell, haXe, Io, Java, server-side JavaScript (Node.js), Lua, Objective-C, Perl, PHP, Pure Data, Python, Ruby, Scala, Smalltalk y Tcl.

Modelo de datos editar

El modelo de datos de Redis se basa en la estructura de datos del tipo diccionario o tabla de hashes que relaciona una llave a un contenido almacenado en un índice. La principal diferencia entre Redis y otros sistemas similares es que los valores no están limitados a ser de tipo string, otros tipos de datos están soportados:

El tipo de valor determina las operaciones (los comandos) disponibles. Redis soporta operaciones atómicas de alto nivel del lado del servidor, como inserciones, uniones, y diferencias entre conjuntos y listas ordenadas. Desde la versión 2.6, liberada a finales de octubre de 2012, se introduce la posibilidad de ejecutar Scripts en el servidor Redis, escritos en lenguaje Lua.

Persistencia editar

Redis normalmente guarda la información en la memoria RAM, pero en versiones superiores a la 2.4 se puede configurar para utilizar Memoria virtual[7]​ pero ahora esto está desactualizado. Se puede hacer que los datos sean persistentes de dos formas, una es hacer snapshots (capturas), aunque no sería realmente durable ya que estos son asíncronos al transferir la memoria al disco cada cierto tiempo. Desde la versión 1.1 la mejor alternativa es usar un archivo del tipo appendonly gracias a un sistema de Journaling el cual escribe en este archivo cada modificación que se realice sobre los datos en memoria pudiendo regenerar los datos. Esto genera un costo en el rendimiento, pero se puede configurar de dos formas, always, que escribirá cualquier cambio en el instante, o everysec que lo hará segundo tras segundo.

Replicación editar

Redis soporta la replicación del tipo maestro-esclavo, pudiéndose replicar los datos de un servidor a muchos esclavos, también un esclavo puede ser maestro para otro esclavo, lo que permite soportar en Redis una replicación en forma de árbol. Los esclavos permiten la escritura de datos, lo que puede ocasionar inconsistencias en los datos no intencionales.

La función de publicación/subscripción esta totalmente soportada, cuando un cliente esclavo se subscribe a un canal este recibe un feed completo de publicaciones del maestro, replicando así en todo el árbol.

La replicación es útil para escalar la lectura (no la escritura) y/o redundar los datos.[8]

Rendimiento editar

En escenarios de datos no durables (solo usando memoria RAM) el rendimiento puede ser extremo comparado con motores de bases de datos,[9]​ tampoco hay una notable diferencia entre lectura y escritura de datos.

Véase también editar

Referencias editar

  1. Trollope, Rowan (20 de marzo de 2024). «Redis Adopts Dual Source-Available Licensing». Redis (en inglés). Consultado el 25 de marzo de 2024. 
  2. [1]
  3. VMWare: The Console: VMware hires key developer for Redis
  4. Thanks Pivotal, Hello Redis Labs, 15 de julio de 2015, Salvatore Sanfilippo
  5. [2]
  6. «Redis language bindings». Archivado desde el original el 8 de febrero de 2014. Consultado el 25 de enero de 2012. 
  7. Redis documentation "Virtual Memory", redis.io, accessed January 18, 2011.
  8. http://code.google.com/p/redis/wiki/ReplicationHowto
  9. «FAQ». 

Enlaces externos editar