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 una base de datos de clave-valor en memoria distribuida , caché y agente 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 , flujos 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 para Redis adoptaron la SSPL . [27] En 2024, el código principal de Redis pasó a tener doble licencia, la Redis Source Available License v2 y la Server Side Public License 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 significativos al escalar algunos tipos de cargas de trabajo utilizando sistemas de bases de datos tradicionales, Sanfilippo comenzó en 2009 a prototipar 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 unas semanas de usar el proyecto internamente con éxito, Sanfilippo decidió abrirlo como código fuente, anunciando el proyecto en Hacker News . El proyecto comenzó a ganar tracción, particularmente entre la comunidad Ruby, con GitHub e Instagram estando 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 patrocinado por Pivotal Software (una empresa derivada de VMware). [34]

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

En agosto de 2018, Redis Labs anunció el cambio a una licencia de software disponible en código fuente , la Licencia Pública del Lado del Servidor para algunos de los módulos opcionales disponibles para Redis, [27] al tiempo que afirmó que el software principal seguirá teniendo licencia BSD. [36]

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

En junio de 2020, Salvatore Sanfilippo renunció como único responsable de Redis. Sanfilippo fue reemplazado por Yossi Gottlieb y Oran Agra. [38] [39]

En marzo de 2024, Redis cambió a una licencia de software propietario diferente, denominada Redis Source Available License v2 y Server Side Public License v1, también para su repositorio principal, [6] rompiendo la promesa de 2018. Como consecuencia, la Linux Foundation creó una bifurcación con el nombre de Valkey , [40] permitiendo a los mantenedores, colaboradores 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 un almacén y un caché al mismo tiempo. Fue diseñado para que los datos siempre se modifiquen y lean desde la memoria principal del ordenador, 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 base de datos, sino operaciones específicas que se realizan sobre tipos de datos abstractos determinados. Por lo tanto, los datos deben almacenarse de una manera que sea adecuada posteriormente para una recuperación rápida. La recuperación se realiza sin la 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 prestando servicio a los clientes mientras el proceso secundario escribe los datos en memoria en el disco.

Popularidad

Según las clasificaciones mensuales de DB-Engines , Redis suele ser la base de datos de clave-valor más popular . [10] Redis también ha sido clasificada como la base de datos NoSQL n.° 4 en satisfacción del usuario y presencia en el mercado según las reseñas de los usuarios, [41] la base de datos NoSQL más popular en contenedores, [42] y el almacén de datos n.° 4 de 2019 según el sitio web de clasificación stackshare.io. [43] Fue votada como la base de datos más querida en la encuesta de desarrolladores de Stack Overflow cada año desde 2017 hasta 2021. [44]

Idiomas soportados

Desde la versión 2.6, Redis cuenta con scripts del lado del servidor en el lenguaje Lua . [45]

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

Tipos de datos

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

El tipo de un valor determina qué operaciones (denominadas comandos) están disponibles para el valor. Redis admite operaciones atómicas de alto nivel del lado del servidor, como la intersección, la unión y la diferencia entre conjuntos y la ordenació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 licencia dual y no están sujetos a la cláusula BSD 3: [50]

Las implementaciones anteriores incluyen:

Persistencia

Redis normalmente mantiene todo el conjunto de datos en la memoria. Las versiones hasta la 2.4 se podían configurar para usar lo que ellos llaman memoria virtual [60] en la que parte del conjunto de datos se almacena en el disco, pero esta característica está obsoleta. La persistencia en Redis se puede lograr a través de dos métodos diferentes. Primero, mediante la creación de instantáneas, donde el conjunto de datos se transfiere de forma asincrónica de la memoria al disco a intervalos regulares como un volcado binario, utilizando el formato de archivo de volcado RDB de Redis. 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 anexión (AOF) en un proceso en segundo plano. Redis puede reescribir el archivo de solo anexión en segundo plano para evitar un crecimiento indefinido del registro en diario. El registro en diario se introdujo en la versión 1.1 y generalmente se considera el enfoque más seguro.

De manera predeterminada, Redis escribe datos en un sistema de archivos al menos cada 2 segundos, con opciones más o menos robustas disponibles si es necesario. En caso de una falla total del sistema con 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 pueden replicarse 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 un feed completo de mensajes publicados en el maestro, en cualquier parte del árbol de replicación. La replicación es útil para la escalabilidad de lectura (pero no de escritura) o la redundancia de datos. [61]

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 que una transacción está confirmada. [7] Redis funciona como un solo proceso y es de un solo subproceso o de doble subproceso cuando reescribe el AOF (archivo de solo anexión). [62] Por lo tanto, una sola instancia de Redis no puede utilizar la ejecución paralela de tareas como los procedimientos almacenados .

Agrupamiento

Redis introdujo la agrupación en clústeres en abril de 2015 con el lanzamiento de la versión 3.0. [63] La especificación de clústeres 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 las claves que pertenecen al mismo nodo y los comandos relacionados con las operaciones de selección de bases de datos no están disponibles. [64] Un clúster de Redis puede escalar hasta 1000 nodos, lograr una seguridad de escritura "aceptable" y continuar las operaciones cuando algunos nodos fallan. [65] [66]

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áginas completas, las aplicaciones de cola de mensajes, las tablas de clasificación y el conteo, entre otros. [67] 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 Redis administrado llamado ElastiCache para Redis, Google ofrece un servicio Redis administrado llamado Cloud Memorystore, [68] Microsoft ofrece Azure Cache para Redis en Azure , [69] y Alibaba ofrece ApsaraDB para Redis en Alibaba Cloud . [70]

Usuarios

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

Véase también

Referencias

  1. ^ ab Bernardi, Stefano (4 de enero de 2011). "Entrevista con Salvatore Sanfilippo, creador de Redis, que trabaja desde Sicilia". EU-Startups . Menlo Media.
  2. ^ ab Haber, Itamar (15 de julio de 2015). "Salvatore Sanfilippo: Bienvenido a Redis Labs". Redis Labs .
  3. ^ "Página 7 de 7 - Redis - Archivo de código de Google - Almacenamiento a largo plazo para hospedaje de proyectos de código de Google". code.google.com . Consultado el 22 de marzo de 2024 .
  4. ^ "Versión 7.4.1". 2 de octubre de 2024. Consultado el 27 de octubre 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". groups.google.com . Consultado el 25 de febrero de 2022 .
  9. ^ "Redis". Redis . Consultado el 22 de julio de 2023 .
  10. ^ ab "Clasificación DB-Engines: clasificación de popularidad de almacenes de clave-valor". DB-Engines .
  11. ^ Clark, Lindsay. "Redis se convierte en la base de datos más popular en AWS a medida que aumentan las implementaciones de aplicaciones complejas en la nube". www.theregister.com . Consultado el 22 de julio de 2023 .
  12. ^ "Instablinks EP 07: Redis™: la tecnología de base de datos en memoria más popular". Instaclustr . Consultado el 22 de julio de 2023 .
  13. ^ "Clasificación de DB-Engines". DB-Engines . Consultado el 22 de julio de 2023 .
  14. ^ ab Scaling Redis en Twitter, 31 de agosto de 2014 , consultado el 22 de julio de 2023
  15. ^ ab Uso de Redis a escala en Twitter - por Rashmi Ramesh de Twitter - RedisConf17 -, 5 de julio de 2017 , consultado el 22 de julio de 2023
  16. ^ ab AWS re:Invent 2018: El viaje de Airbnb desde Redis autogestionado a ElastiCache para Redis (DAT319), 28 de noviembre de 2018 , consultado el 22 de julio de 2023
  17. ^ ab "Desarrollo de resiliencia a escala en Tinder con Amazon ElastiCache | Blog de bases de datos de AWS". aws.amazon.com . 2020-01-30 . Consultado el 2023-07-22 .
  18. ^ ab AWS re:Invent 2022 - Cómo Yahoo optimiza los costos de sus cargas de trabajo en memoria con AWS (DAT321), 2 de diciembre de 2022 , consultado el 22 de julio de 2023
  19. ^ de AWS re:Invent 2014 | (SDD402) Análisis profundo de Amazon ElastiCache, 17 de noviembre de 2014 , consultado el 22 de julio de 2023
  20. ^ ab "Estudio de caso de Hulu". Amazon Web Services, Inc. Recuperado el 22 de julio de 2023 .
  21. ^ ab "Estudio de caso de migración de base de datos de Amazon GameOn: Amazon Web Services (AWS)". Amazon Web Services, Inc. Recuperado el 22 de julio de 2023 .
  22. ^ "Errores de API elevados". status.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 2021-06-29 .
  24. ^ Kepes, Ben (15 de julio de 2015). «Redis Labs contrata al creador de Redis, Salvatore Sanfilippo». Network World . Consultado el 30 de agosto de 2015 .
  25. ^ Francisco, Thomas Claburn en San. "El maestro de bases de datos Antirez dice Arrivederci a Redis: Parece que quiere una vida no estructurada escribiendo código, no una estructurada gestionando software". www.theregister.com . Consultado el 29 de junio de 2021 .
  26. ^ "La startup de bases de datos Redis Labs cambia su nombre a... simplemente Redis". SiliconANGLE . 2021-08-11 . Consultado el 2021-08-11 .
  27. ^ ab Claburn, Thomas. "Redis tiene licencia para matar: el creador de bases de datos de código abierto toma parte del 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". GitHub Gist . Consultado el 8 de octubre de 2018 .
  29. ^ Wanstrath, Chris (3 de noviembre de 2009). "Introducing Resque". Blog . Consultado el 8 de octubre de 2018 .
  30. ^ Krieger, Mike (31 de octubre de 2011). «Almacenamiento de 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 a un 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". VMware Blog . 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 . Redis Labs . 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. ^ Shoolman, Yiftach (22 de agosto de 2018). "La licencia de Redis es BSD y seguirá siendo BSD". Redis.io . Redis Labs . Consultado el 30 de septiembre de 2024 .
  37. ^ abc "¡Redis 5.0 ya está aquí!". 22 de octubre de 2018.
  38. ^ "El maestro de bases de datos Antirez dice Arrivederci a Redis: Parece que quiere una vida desestructurada escribiendo código, no una estructurada gestionando software". theregister.com .
  39. ^ "El final de la aventura de Redis -". antirez.com . Consultado el 10 de noviembre de 2020 .
  40. ^ "La Fundación Linux lanza la comunidad Valkey de código abierto".
  41. ^ "Las mejores bases de datos NoSQL: informe de otoño de 2015 de G2 Crowd". G2 Crowd. Archivado desde el original el 24 de agosto de 2015. Consultado el 25 de agosto de 2015 .
  42. ^ "8 datos sorprendentes sobre la adopción real de Docker". Datadog . 13 de junio de 2018.
  43. ^ "🏆 Las 50 mejores herramientas para desarrolladores de 2019". StackShare . Consultado el 28 de julio de 2020 .
  44. ^ "Resultados de la encuesta para desarrolladores de 2021: bases de datos más queridas, temidas y deseadas". Desbordamiento de pila . Intercambio de pila . Consultado el 23 de agosto de 2021 .
  45. ^ "EVAL – Redis". redis.io .
  46. ^ desde "Redis". redis.io .
  47. ^ "Danieleteti/Delphiredisclient". GitHub . 17 de septiembre de 2022.
  48. ^ Lewis, BW (5 de julio de 2015). "rredis: Cliente de base de datos de clave/valor "Redis"". The Comprehensive R Archive Network . Consultado el 3 de abril de 2019 .
  49. ^ "Notas de la versión de Redis 3.2". GitHub . Consultado el 10 de marzo de 2017 .
  50. ^ "Descripción general de las licencias de Redis". Redis . Consultado el 30 de septiembre de 2023 .
  51. ^ "RedisJSON: un tipo de datos JSON para Redis".
  52. ^ "RedisJSON: un tipo de datos JSON para Redis". redisjson.io .
  53. ^ RediSearch, RediSearch, 30 de septiembre de 2023 , consultado el 30 de septiembre de 2023
  54. ^ "RedisTimeSeries - Estructura de datos de series temporales para Redis".
  55. ^ "RedisBloom - Módulo de tipos de datos probabilísticos para Redis".
  56. ^ "Módulos". Redis . Consultado el 30 de septiembre de 2023 .
  57. ^ "RedisGraph: un módulo de base de datos de gráficos para Redis".
  58. ^ Kogan, Lior (5 de julio de 2023). «Anuncio de fin de vida útil de RedisGraph». Redis . Consultado el 30 de septiembre de 2023 .
  59. ^ FalkorDB, FalkorDB, 29 de septiembre de 2023 , consultado el 30 de septiembre de 2023
  60. ^ "Virtual Memory". Redis.io . Consultado el 11 de abril de 2019 .
  61. ^ "Archivo de código de Google: almacenamiento a largo plazo para alojamiento de proyectos de código de Google". code.google.com .
  62. ^ "Redis en Raspberry Pi: aventuras en tierras no alineadas - <antirez>". antirez.com .
  63. ^ "Notas de la versión de Redis 3.0". GitHub . Consultado el 10 de marzo de 2017 .
  64. ^ "Cluster Spec" (Especificación de clúster) . Consultado el 10 de marzo de 2017 .
  65. ^ "Cluster Spec" (Especificación de clúster) . Consultado el 10 de marzo de 2017 .
  66. ^ "Tutorial de cluster" . Consultado el 10 de marzo de 2017 .
  67. ^ "Los 5 principales casos de uso de Redis: ObjectRocket". ObjectRocket . Rackspace. 7 de noviembre de 2017.
  68. ^ "Memorystore: almacén de datos en memoria". Google Cloud . Consultado el 3 de febrero de 2023 .
  69. ^ "Azure Redis Cache - Servicio en la nube de caché Redis - Microsoft Azure". azure.microsoft.com .
  70. ^ "ApsaraDB para Redis: un servicio de base de datos de valor clave - Alibaba Cloud". www.alibabacloud.com .
  71. ^ "Cómo Twitter usa Redis para escalar: 105 TB de RAM, 39 millones de QPS, más de 10 000 instancias: alta escalabilidad". Highscalability.com . 8 de septiembre de 2014.

Lectura adicional

Enlaces externos