stringtranslate.com

Redis

Redis ( / r ɛ d ɪ s / ; [7] [8] Servidor de diccionario remoto ) [7] es un almacenamiento en memoria disponible en origen , que se utiliza como base de datos de valores clave en memoria distribuida , caché y intermediario de mensajes , con durabilidad opcional . [9] Debido a que contiene todos los datos en la memoria y debido a su diseño, Redis ofrece lecturas y escrituras de baja latencia , lo que lo hace particularmente adecuado para casos de uso que requieren un caché. Redis es la base de datos NoSQL más popular , [10] [11] [12] y una de las bases de datos más populares en general. [13] Redis se utiliza en empresas como Twitter , [14] [15] Airbnb , [16] Tinder , [17] Yahoo , [18] Adobe , [19] Hulu , [20] Amazon [21] y OpenAI . [22]

Redis admite diferentes tipos de estructuras de datos abstractas , como cadenas , listas , mapas , conjuntos , conjuntos ordenados, HyperLogLogs , mapas de bits , secuencias e índices espaciales .

El proyecto fue desarrollado y mantenido por Salvatore Sanfilippo, a partir de 2009. [23] Desde 2015 hasta 2020, dirigió un equipo central del proyecto patrocinado por Redis Labs . [24] Salvatore Sanfilippo dejó Redis como mantenedor en 2020. [25] En 2021, Redis Labs eliminó Labs de su nombre y ahora se conoce simplemente como "Redis". [26]

En 2018, algunos módulos de Redis adoptaron el SSPL . [27] En 2024, el código principal de Redis cambió a licencia dual bajo la Licencia disponible de origen de Redis v2 y la Licencia pública del lado del servidor v1. [6]

Historia

Salvatore Sanfilippo, el desarrollador original de Redis (foto tomada en 2015)

El nombre Redis significa Servidor de diccionario remoto. [7] El proyecto Redis comenzó cuando Salvatore Sanfilippo, apodado antirez , el desarrollador original de Redis, estaba tratando de mejorar la escalabilidad de su startup italiana, desarrollando un analizador de registros web en tiempo real . Después de encontrar problemas importantes al escalar algunos tipos de cargas de trabajo utilizando sistemas de bases de datos tradicionales, Sanfilippo comenzó en 2009 a crear un prototipo de una primera versión de prueba de concepto de Redis en Tcl . [28] Más tarde, Sanfilippo tradujo ese prototipo al lenguaje C e implementó el primer tipo de datos, la lista. Después de algunas semanas de utilizar el proyecto internamente con éxito, Sanfilippo decidió abrirlo y anunció el proyecto en Hacker News . El proyecto comenzó a ganar fuerza, particularmente entre la comunidad Ruby, y GitHub e Instagram estuvieron entre las primeras empresas en adoptarlo. [29] [30]

Sanfilippo fue contratado por VMware en marzo de 2010. [31] [32] [33]

En mayo de 2013, Redis fue patrocinada por Pivotal Software (una filial de VMware). [34]

En junio de 2015, el desarrollo pasó a ser patrocinado por Redis Labs . [35]

En agosto de 2018, Redis Labs anunció el cambio a una licencia de software disponible en origen , Server Side Public License . Inicialmente se dijo que el cambio afectaría sólo a algunos módulos opcionales desarrollados principalmente por Redis Labs. [27]

En octubre de 2018, se lanzó Redis 5.0, que presenta Redis Stream, una nueva estructura de datos que permite el almacenamiento de múltiples campos y valores de cadena con una secuencia automática basada en el tiempo en una sola clave. [36]

En junio de 2020, Salvatore Sanfilippo renunció como único mantenedor de Redis. A Sanfilippo le sucedieron Yossi Gottlieb y Orán Agra. [37] [38]

En 2024, Redis cambió a una licencia de software propietario diferente, denominada Licencia disponible de origen de Redis v2 y Licencia pública del lado del servidor v1, también para su repositorio principal. [6] Como consecuencia, la Fundación Linux creó una bifurcación con el nombre de Valkey , [39] permitiendo a los mantenedores, contribuyentes y usuarios de la comunidad continuar trabajando en una versión de código abierto de la base de datos Redis.

Diferencias con otros sistemas de bases de datos.

Redis popularizó la idea de un sistema que puede considerarse tienda y caché al mismo tiempo. Fue diseñado para que los datos siempre se modifiquen y lean desde la memoria principal de la computadora, pero también se almacenen en el disco en un formato que no es adecuado para el acceso aleatorio a los datos. Los datos formateados solo se reconstruyen en la memoria una vez que se reinicia el sistema.

Redis también proporciona un modelo de datos que es muy inusual en comparación con un sistema de gestión de bases de datos relacionales (RDBMS). Los comandos de usuario no describen una consulta que debe ejecutar el motor de la base de datos, sino operaciones específicas que se realizan en tipos de datos abstractos determinados. Por lo tanto, los datos deben almacenarse de una manera que sea adecuada para una recuperación rápida en el futuro. La recuperación se realiza sin ayuda del sistema de base de datos en forma de índices secundarios, agregaciones u otras características comunes de los RDBMS tradicionales. La implementación de Redis hace un uso intensivo de la llamada al sistema fork para duplicar el proceso que contiene los datos, de modo que el proceso principal continúe atendiendo a los clientes mientras el proceso secundario escribe los datos en la memoria en el disco.

Popularidad

Según las clasificaciones mensuales de DB-Engines , Redis suele ser la base de datos de valores clave más popular . [10] Redis también ha sido clasificada como la base de datos NoSQL número 4 en satisfacción del usuario y presencia en el mercado según las opiniones de los usuarios, [40] la base de datos NoSQL más popular en contenedores, [41] y el almacén de datos número 4 de 2019 según la clasificación del stackshare de sitios web. .io. [42] Fue votada como la base de datos más querida en la encuesta para desarrolladores de Stack Overflow en 2017, 2018, 2019, 2020 y 2021. [43]

Idiomas soportados

Desde la versión 2.6, Redis presenta secuencias de comandos del lado del servidor en el lenguaje Lua . [44]

Muchos lenguajes de programación tienen enlaces de lenguaje Redis en el lado del cliente, incluidos: [45] ActionScript , C , C++ , C# , Chicken , Clojure , Common Lisp , Crystal , D , Dart , Delphi , [46] Elixir , Erlang , Go , Haskell , Haxe , Io , Java , Nim , JavaScript ( Node.js ), Julia , Lua , Objective-C , OCaml , Perl , PHP , Pure Data , Python , R , [47] Racket , Ruby , Rust , Scala , Smalltalk , Swift y Tcl . Existen varios programas de software de cliente en estos idiomas. [45]

Tipos de datos

Redis asigna claves a tipos de valores. Una diferencia importante entre Redis y otros sistemas de almacenamiento estructurados es que Redis no solo admite cadenas , sino también tipos de datos abstractos:

El tipo de valor determina qué operaciones (llamadas comandos) están disponibles para el valor. Redis admite operaciones atómicas de alto nivel del lado del servidor, como intersección, unión y diferencia entre conjuntos y clasificación de listas, conjuntos y conjuntos ordenados.

Se admiten más tipos de datos según la API de módulos de Redis. Tenga en cuenta que algunos de ellos tienen doble licencia y no están sujetos a la cláusula BSD 3: [49]

Las implementaciones anteriores incluyen:

Persistencia

Redis normalmente guarda todo el conjunto de datos en la memoria. Las versiones hasta la 2.4 se pueden configurar para usar lo que ellos llaman memoria virtual [59] en la que parte del conjunto de datos se almacena en el disco, pero esta característica está en desuso. La persistencia en Redis se puede lograr mediante dos métodos diferentes. Primero, mediante la creación de instantáneas, donde el conjunto de datos se transfiere de forma asíncrona desde la memoria al disco a intervalos regulares como un volcado binario, utilizando el formato de archivo de volcado Redis RDB. Alternativamente, mediante el registro en diario , donde se agrega un registro de cada operación que modifica el conjunto de datos a un archivo de solo anexo (AOF) en un proceso en segundo plano. Redis puede reescribir el archivo de solo agregar en segundo plano para evitar un crecimiento indefinido de la revista. El registro en diario se introdujo en la versión 1.1 y generalmente se considera el método más seguro.

De forma predeterminada, Redis escribe datos en un sistema de archivos al menos cada 2 segundos, con opciones más o menos sólidas disponibles si es necesario. En el caso de una falla total del sistema en la configuración predeterminada, solo se perderían unos pocos segundos de datos.

Replicación

Redis admite la replicación maestro-réplica . Los datos de cualquier servidor Redis se pueden replicar en cualquier número de réplicas. Una réplica puede ser maestra de otra réplica. Esto permite a Redis implementar un árbol de replicación de raíz única. Las réplicas de Redis se pueden configurar para aceptar escrituras, lo que permite inconsistencias intencionales y no intencionales entre instancias. La función de publicación-suscripción está completamente implementada, por lo que un cliente de una réplica puede suscribirse a un canal y recibir una fuente completa de mensajes publicados en el maestro, en cualquier lugar del árbol de replicación. La replicación es útil para la escalabilidad de lectura (pero no de escritura) o la redundancia de datos. [60]

Actuación

Cuando no se necesita la durabilidad de los datos, la naturaleza en memoria de Redis le permite funcionar bien en comparación con los sistemas de bases de datos que escriben cada cambio en el disco antes de considerar confirmada una transacción. [7] Redis opera como un proceso único y tiene un solo subproceso o doble subproceso cuando reescribe el AOF (archivo de solo agregar). [61] Por lo tanto, una sola instancia de Redis no puede utilizar la ejecución paralela de tareas como procedimientos almacenados .

Agrupación

Redis introdujo la agrupación en clústeres en abril de 2015 con el lanzamiento de la versión 3.0. [62] La especificación del clúster implementa un subconjunto de comandos de Redis: todos los comandos de una sola tecla están disponibles, las operaciones de múltiples teclas (comandos relacionados con uniones e intersecciones) están restringidas a claves que pertenecen al mismo nodo y los comandos relacionados con operaciones de selección de bases de datos no están disponibles. [63] Un clúster de Redis puede escalar hasta 1000 nodos, lograr una seguridad de escritura "aceptable" y continuar las operaciones cuando algunos nodos fallan. [64] [65]

Casos de uso

Debido a la naturaleza del diseño de la base de datos, los casos de uso típicos son el almacenamiento en caché de sesiones, el caché de página completa, aplicaciones de cola de mensajes, tablas de clasificación y conteo, entre otros. [66] El paradigma de mensajería de publicación-suscripción permite la comunicación en tiempo real entre servidores.

Amazon Web Services ofrece un servicio de Redis administrado llamado ElastiCache para Redis, Google ofrece un servicio de Redis administrado llamado Cloud Memorystore, [67] Microsoft ofrece Azure Cache para Redis en Azure , [68] y Alibaba ofrece ApsaraDB para Redis en Alibaba Cloud . [69]

Usuarios

Redis se utiliza en empresas como Twitter, [14] [15] [70] AirBnB, [16] Tinder, [17] Yahoo, [18] Adobe, [19] Hulu, [20] y Amazon. [21]

Ver también

Referencias

  1. ^ ab Bernardi, Stefano (4 de enero de 2011). "Una entrevista con Salvatore Sanfilippo, creador de Redis, que trabaja en Sicilia". UE-Startups . Medios Menlo.
  2. ^ ab Haber, Itamar (15 de julio de 2015). "Salvatore Sanfilippo: Bienvenido a Redis Labs". Laboratorios Redis .
  3. ^ "Página 7 de 7 - Redis - Google Code Archive - Almacenamiento a largo plazo para Google Code Project Hosting". código.google.com . Consultado el 22 de marzo de 2024 .
  4. ^ "Versión 7.2.5". 19 de mayo de 2024 . Consultado el 25 de mayo de 2024 .
  5. ^ "Introducción a Redis". Redis está escrito en ANSI C y funciona en la mayoría de los sistemas POSIX como Linux, *BSD, OS X sin dependencias externas.
  6. ^ abc "LICENCIA.txt". GitHub . 20 de marzo de 2024.
  7. ^ abcd "Preguntas frecuentes: Redis". Redis.io . Consultado el 12 de febrero de 2022 .
  8. ^ "Grupos de Google". grupos.google.com . Consultado el 25 de febrero de 2022 .
  9. ^ "Redis". Redis . Consultado el 22 de julio de 2023 .
  10. ^ ab "Ranking DB-Engines: ranking de popularidad de tiendas de valores clave". Motores DB .
  11. ^ Clark, Lindsay. "Redis se convierte en la base de datos más popular en AWS a medida que aumentan las implementaciones complejas de aplicaciones en la nube". www.theregister.com . Consultado el 22 de julio de 2023 .
  12. ^ "Instablinks EP 07: Redis ™: la tecnología de bases de datos en memoria más popular". Instalustr . Consultado el 22 de julio de 2023 .
  13. ^ "Ranking de motores DB". Motores DB . Consultado el 22 de julio de 2023 .
  14. ^ ab Scaling Redis en Twitter , consultado el 22 de julio de 2023
  15. ^ ab Uso de Redis a escala en Twitter - por Rashmi Ramesh de Twitter - RedisConf17 - , consultado el 22 de julio de 2023
  16. ^ ab AWS re:Invent 2018: El viaje de Airbnb desde Redis autoadministrado a ElastiCache para Redis (DAT319) , consultado el 22 de julio de 2023
  17. ^ ab "Creación de resiliencia a escala en Tinder con Amazon ElastiCache | Blog de base de datos de AWS". aws.amazon.com . 2020-01-30 . Consultado el 22 de julio de 2023 .
  18. ^ ab AWS re:Invent 2022: cómo los costos de Yahoo optimizan sus cargas de trabajo en memoria con AWS (DAT321) , consultado el 22 de julio de 2023
  19. ^ ab AWS re:Invent 2014 | (SDD402) Análisis profundo de Amazon ElastiCache , consultado el 22 de julio de 2023
  20. ^ ab "Estudio de caso de Hulu". Servicios web de Amazon, Inc. Consultado el 22 de julio de 2023 .
  21. ^ ab "Estudio de caso de migración de bases de datos de Amazon GameOn: Amazon Web Services (AWS)". Servicios web de Amazon, Inc. Consultado el 22 de julio de 2023 .
  22. ^ "Errores elevados de API". estado.openai.com . Consultado el 28 de octubre de 2023 .
  23. ^ "Una conversación con Salvatore Sanfilippo, creador de la base de datos de código abierto Redis". VentureBeat . 2016-06-20 . Consultado el 29 de junio de 2021 .
  24. ^ Kepes, Ben (15 de julio de 2015). "Redis Labs contrata al creador de Redis, Salvatore Sanfilippo". Mundo de la Red . Consultado el 30 de agosto de 2015 .
  25. ^ Francisco, Thomas Claburn en San. "El maestro de bases de datos Antirez dice que llegó a Redis: parece que quiere un código de escritura de vida no estructurado, no uno estructurado que administre software". www.theregister.com . Consultado el 29 de junio de 2021 .
  26. ^ "La startup de bases de datos Redis Labs cambia su nombre a ... solo Redis". ÁNGULO de silicio . 2021-08-11 . Consultado el 11 de agosto de 2021 .
  27. ^ ab Claburn, Thomas. "Redis tiene licencia para matar: el creador de bases de datos de código abierto utiliza algún código propietario". www.theregister.com . Consultado el 21 de marzo de 2024 .
  28. ^ Sanfilippo, Salvatore (28 de abril de 2017). "Prototipo Tcl de Redis". Esencia de GitHub . Consultado el 8 de octubre de 2018 .
  29. ^ Wanstrath, Chris (3 de noviembre de 2009). "Presentando Resque". Blog . Consultado el 8 de octubre de 2018 .
  30. ^ Krieger, Mike (31 de octubre de 2011). "Almacenar cientos de millones de pares clave-valor simples en Redis". Blog de ingeniería de Instagram . Consultado el 8 de octubre de 2018 .
  31. ^ Shapira, Gwen (17 de marzo de 2010). "VMware contrata al desarrollador clave de Redis, pero ¿por qué?". Blog . Consultado el 25 de septiembre de 2016 .
  32. ^ Sanfilippo, Salvatore (15 de marzo de 2010). "VMware: el nuevo hogar de Redis". Blog . Consultado el 25 de septiembre de 2016 .
  33. ^ Collison, Derek (15 de marzo de 2010). "VMware: The Console: VMware contrata a un desarrollador clave para Redis". Blog de VMware . Archivado desde el original el 22 de marzo de 2010 . Consultado el 25 de septiembre de 2016 .
  34. ^ Sanfilippo, Salvatore. "Patrocinadores de Redis". Redis.io . Laboratorios Redis . Consultado el 11 de abril de 2019 .
  35. ^ Sanfilippo, Salvatore (15 de julio de 2015). "Gracias Pivotal, Hola Redis Labs". <antirez> . Consultado el 3 de abril de 2019 .
  36. ^ a b C "¡Redis 5.0 ya está aquí!". 22 de octubre de 2018.
  37. ^ "El maestro de bases de datos Antirez dice que llegó a Redis: parece que quiere un código de escritura de vida no estructurado, no uno estructurado que administre software". allíregister.com .
  38. ^ "El final de la aventura de Redis -". antirez.com . Consultado el 10 de noviembre de 2020 .
  39. ^ "La Fundación Linux lanza la comunidad Valkey de código abierto".
  40. ^ "Las mejores bases de datos NoSQL: informe de otoño de 2015 de G2 Crowd". Multitud G2. Archivado desde el original el 24 de agosto de 2015 . Consultado el 25 de agosto de 2015 .
  41. ^ "8 hechos sorprendentes sobre la adopción real de Docker". Perro de datos . 13 de junio de 2018.
  42. ^ "🏆 Las 50 mejores herramientas para desarrolladores de 2019". PilaCompartir . Consultado el 28 de julio de 2020 .
  43. ^ "Resultados de la encuesta para desarrolladores 2021: bases de datos más queridas, temidas y buscadas". Desbordamiento de pila . Intercambio de pila . Consultado el 23 de agosto de 2021 .
  44. ^ "EVAL-Redis". redis.io .
  45. ^ ab "Redis". redis.io .
  46. ^ "Danieleteti/Delphirediscliente". GitHub . 17 de septiembre de 2022.
  47. ^ Lewis, BW (5 de julio de 2015). "rredis: Cliente de base de datos clave/valor" Redis "". La red integral de archivos de R. Consultado el 3 de abril de 2019 .
  48. ^ "Notas de la versión de Redis 3.2". GitHub . Consultado el 10 de marzo de 2017 .
  49. ^ "Descripción general de las licencias de Redis". Redis . Consultado el 30 de septiembre de 2023 .
  50. ^ "RedisJSON: un tipo de datos JSON para Redis".
  51. ^ "RedisJSON: un tipo de datos JSON para Redis". redisjson.io .
  52. ^ RediSearch, RediSearch, 30 de septiembre de 2023 , consultado el 30 de septiembre de 2023
  53. ^ "RedisTimeSeries: estructura de datos de series temporales para Redis".
  54. ^ "RedisBloom: módulo de tipos de datos probabilísticos para Redis".
  55. ^ "Módulos". Redis . Consultado el 30 de septiembre de 2023 .
  56. ^ "RedisGraph: un módulo de base de datos de gráficos para Redis".
  57. ^ Kogan, Lior (5 de julio de 2023). "Anuncio de fin de vida útil de RedisGraph". Redis . Consultado el 30 de septiembre de 2023 .
  58. ^ FalkorDB, FalkorDB, 29 de septiembre de 2023 , consultado el 30 de septiembre de 2023
  59. ^ "Memoria virtual". Redis.io . Consultado el 11 de abril de 2019 .
  60. ^ "Google Code Archive: almacenamiento a largo plazo para el alojamiento de proyectos de Google Code". código.google.com .
  61. ^ "Redis en Raspberry Pi: aventuras en tierras no alineadas - <antirez>". antirez.com .
  62. ^ "Notas de la versión de Redis 3.0". GitHub . Consultado el 10 de marzo de 2017 .
  63. ^ "Especificación de clúster" . Consultado el 10 de marzo de 2017 .
  64. ^ "Especificación de clúster" . Consultado el 10 de marzo de 2017 .
  65. ^ "Tutorial de clúster" . Consultado el 10 de marzo de 2017 .
  66. ^ "Los cinco casos de uso principales de Redis: ObjectRocket". ObjetoRocket . Espacio de rack. 7 de noviembre de 2017.
  67. ^ "Memorystore: almacén de datos en memoria". Nube de Google . Consultado el 3 de febrero de 2023 .
  68. ^ "Azure Redis Cache - Servicio en la nube de caché de Redis - Microsoft Azure". azure.microsoft.com .
  69. ^ "ApsaraDB para Redis: un servicio de base de datos de valor clave: Alibaba Cloud". www.alibabacloud.com .
  70. ^ "Cómo Twitter utiliza Redis para escalar: 105 TB de RAM, 39 mm de QPS, más de 10 000 instancias: alta escalabilidad". Alta escalabilidad.com .

Otras lecturas

enlaces externos