For faster navigation, this Iframe is preloading the Wikiwand page for Redis.

Redis

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.519 de mayo de 2024
Enlaces


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].

Historia

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

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

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

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

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

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

Referencias

  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». 
{{bottomLinkPreText}} {{bottomLinkText}}
Redis
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?