Redka una alternativa escalable a Redis con SQLite
La decisión de Redis de cambiar el tipo de licencia para sus productos con la finalidad de evitar que productos comerciales continuaran abusando del proyecto, no ha sido bien visto en el mundo del open source por parte de muchos. Y aunque hay un sector que apoya el cambio implementado, puesto que son cada vez más los que alzan la voz y expresan sus quejas sobre los constantes abusos, el cambio en Redis ha dado pie al lanzamiento de otros proyectos y forks.
Microsoft no desaprovechó el momento y quiso impulsar su proyecto de código abierto Garnet, también otros desarrolladores conocidos por la comunidad anunciaron sus soluciones como fue el caso de Drew DeVault (creador de Hyprland) con Redict e incluso la Fundación Linux también lanzo su fork, llamado Valkey.
Y ahora, se ha dado a conocer un nuevo proyecto, el cual tiene como nombre Redka y que tiene como finalidad el ofrecer un protocolo RESP y una API compatibles con el DBMS de Redis, pero implementados sobre la biblioteca SQLite.
Sobre Redka
Redka a diferencia de otros forks y proyectos que pretenden sustituir a Redis, ofrece una solución para gestionar datos con rapidez y confiabilidad, sin las limitaciones de almacenamiento en RAM de Redis, además de que se enfoca en el uso de SQLite y permite acceder a los datos mediante el lenguaje SQL, lo que resulta útil para la generación de informes y el análisis de datos. Redka admite transacciones ACID y puede funcionar como un servidor que acepta solicitudes a través de la red o como un módulo para el lenguaje Go.
En la actualidad, Redka ha añadido compatibilidad con tipos de datos para trabajar con cadenas y hashes, junto con comandos para manipular datos de cadenas, claves, transacciones y hashes. Por ejemplo, hay comandos disponibles para establecer y obtener valores de cadena asociados a una clave, configurar la expiración de las claves, incrementar o disminuir valores, buscar claves mediante plantillas, renombrar claves y ejecutar una serie de comandos dentro de una transacción, así como cancelar una transacción y trabajar con campos en hashes. Algunos de los tipos de comandos y funciones que soporta son:
- Cadenas: operaciones como GET, SET e INCR para manipulación básica de datos.
- Listas y conjuntos: comandos como LPOP para listas y SADD para conjuntos.
- Hashes: manipulación de pares de campo-valor con comandos como HSET y HGET.
- Conjuntos ordenados: ZADD y ZRANK para datos ordenados con puntuaciones.
- Gestión de claves: comandos como DEL y EXPIRE para el ciclo de vida de las claves.
En cuanto al desempeño de Redka, este ha demostrado en las pruebas de rendimiento realizadas utilizando herramientas del proyecto Redis quedarse muy por debajo de un rendimiento óptimo, ya que es de 2 a 6 veces inferior al de Redis, principalmente debido a la falta de optimizaciones específicas para el almacenamiento de datos en formato clave/valor y también que depende de SQLite.
En un entorno de prueba específico, Redis logró un rendimiento de 133 mil operaciones SET por segundo y 139 mil operaciones GET por segundo, mientras que Redka alcanzó un rendimiento de 30 mil operaciones SET por segundo y 63 mil operaciones GET por segundo al tener la base de datos en la memoria de acceso aleatorio. Al almacenar la base de datos en disco, el rendimiento de Redka se situó en 22 mil operaciones SET por segundo y 56 mil operaciones GET por segundo.
Finalmente, se menciona que de los planes que se tienen para futuros lanzamientos sé encuentra el añadir compatibilidad para listas, colecciones (sets) y colecciones ordenadas. A largo plazo, se tiene en mente el implementar el algoritmo HyperLogLog, la capacidad de manipular coordenadas geográficas y comandos de publicación/suscripción.
Ademas mencionan que hasta el momento no se tiene contemplado el soporte para scripts en el lenguaje Lua, autenticación, listas de control de acceso (ACL), monitoreo/desmonitoreo y la capacidad de trabajar en un servidor con múltiples bases de datos y que no se implementará el soporte para clústeres (Redis Cluster) ni el monitoreo (Redis Sentinel).
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.