The decision by Redis, probably the most widely used in-memory NoSQL key/value data store currently, to change its licensing policy, which effectively took it out of the open-source ecosystem, set off a series of events. Let’s recall them in chronological order.
First, Microsoft announced its new open-source project,ย Garnet. Then, a second Redis fork,ย Redict, emerged.
Just a few days later, a third project,ย Valkey, a community-driven open-source alternative to Redis backed by some of the biggest names in tech, announced its launch.
However, what is most intriguing about the new initiative is that it is not “another Redis competitor” but rather somewhat different. So, what is it about?
Meet Redka: The New Database Blending Redis’ Speed with SQLite’s Reliability
Redka aims to combine Redis’s high velocity with SQLite’s durable storage and transaction features in a way that would be compatible with a Redis API.
One of Redis’s main limitations is that the data must fit in RAM. With Redka, your data doesn’t necessarily need to stay jailed within a memory space for larger data sets without being subject to the same hardware restriction.
Redka is also ACID transactional, fully supporting reliable processing of database operations with automatic rollbacks in case of failures. Key capabilities Redka holds include:
- Data Storage Flexibility: Unlike Redis, which mainly stores data in RAM for a fast result during access, Redka manages data persistence to an SQLite database. It means that if there is a system restart, your data will remain safe and sound on the disk.
- Advanced Data Operations: Redka introduces SQL views, which enhance data introspection and reportingโa handy feature for businesses needing detailed data analysis.
- Dual Server Options: Users can deploy Redka as a standalone server or integrate it directly within their Go applications, offering flexibility depending on project needs.
Redka’s Redis-Compatible Features
Redka does Redix, following it in its support for the core data types of strings, lists, sets, hashes, and sorted sets, as well as many commands for dealing with these types. Here are some examples of commands and features you might expect from it.
- Strings: Operations like GET, SET, and INCR are available to handle basic data manipulation.
- Lists and Sets: Commands for managing ordered and unordered collections, such as LPOP for lists and SADD for sets.
- Hashes: You can manipulate field-value pairs using commands like HSET and HGET.
- Sorted Sets: ZADD and ZRANK are ready to use for ordered data with scores.
- Key Management: Key lifecycle is manageable with commands like DEL and EXPIRE.
Installation & Performance
First things first in regard to Redka: its usage is a real no-brainer. It’s available as a single-file binary, which one is able to download and run on both Linux and MacOS systems, or pull as a Docker image to deploy easily into a container. Also, Redka is available to developers as a Go module in applications.
On the performance front, Redka may be unable to compete with Redis on a raw speed basis because it relies on SQLite. However, according to the developers, preliminary benchmarks seem to indicate that it is actually able to write and read tens of thousands of times per second.
For more information, visit the projectโsย GitHub repository.