iTranslated by AI

The content below is an AI-generated translation. This is an experimental feature, and may contain errors. View original article
📁

A Roundup of Diverse Redis Alternatives

に公開

Since Redis is no longer OSS, migration to newcomers like Valkey is reportedly progressing rapidly, so here is my personal summary.

Valkey

https://github.com/valkey-io/valkey

This project was forked from the open-source Redis project just before its transition to a new source-available license.

Released on 2024/03/28, and as of October 22nd, it has 16.9k stars. Since it is a fork, its implementation is relatively faithful to the original Redis.
In its first update after the fork (Valkey 8.0.0), it reportedly already achieved twice the speed of Redis. It seems to have a lot of room for growth, so expectations are high.
Public interest is already very high, with Google starting to offer a dedicated service and a Wikipedia article being created.
Personally, the fact that the handy Hyperloglog works with perfect compatibility and almost no bugs is a big plus.

Redka

https://github.com/nalgeon/redka

Redka aims to re-implement the core of Redis using SQLite while maintaining compatibility with the Redis API.

Released on 2024/04/07. Currently has 3.5k stars.
It uses SQLite as a backend for perfect persistence. Since it runs on HDD, its speed is naturally inferior to other KVS. (According to official benchmarks, it's roughly 1/5th the speed of Redis.)
While it might look like a novelty project, its compatibility is higher than some of the others mentioned below, and most importantly, it will absolutely never volatilize as long as disk space remains, making it surprisingly practical. However, some commands deprecated in the original version are unavailable.
As an aside, it is actually used inside NonFict, the SNS I'm developing.

Dragonfly

https://github.com/dragonflydb/dragonfly

The world's most efficient in-memory data store

Released on 2022/05/30, currently has 25.6k stars. It is the oldest of the Redis variants introduced in this article.
It reportedly boasts more than 20 times the speed of Redis, and it sacrifices everything else for that speed. For example, detailed settings for key eviction are not possible, forcing allkeys-lru.
Wait, it seems even the LRU behavior itself is an approximation. It seems unusable for anything other than a cache...
Actually, until a while ago, it called itself the "fastest in the universe."

Garnet

https://github.com/microsoft/garnet

Garnet is a remote cache-store from Microsoft Research that offers strong performance (throughput and latency), scalability, storage, recovery, cluster sharding, key migration, and replication features. Garnet can work with existing Redis clients.

An unexpected dark horse from Microsoft. Released on 2024/05/19, it has 10.3k stars.
Implemented in C#, it reportedly boasts over 1,000 times the speed of Redis, but since the official graph is on a logarithmic axis, it's hard to get a real sense of it. The promotion is too modest...
As usual, the compatibility seems to be low.

DiceDB

https://github.com/DiceDB/dice

DiceDB is an in-memory, real-time, and reactive database that supports Redis and SQL, optimized for building modern hardware and real-time applications.

Released on 2022/10/15, it has 6.5k stars. It boasts 10 times the speed of Redis and is reportedly compatible with SQL.
Honestly, I don't know how they map SQL data structures to KVS, but...
To be frank, this is the least appealing one among these.

RediSQL

https://github.com/RedBeardLab/rediSQL

RediSQL is a fast in-memory SQL engine with batteries included.

A total reversal... It seems to be a wrapper library that allows access to Redis's in-memory database using SQL syntax.
It has 1.5k stars, but there have been no updates to the GitHub repository since 2019, so development and usage don't seem very active. I can't recommend it, even as a compliment.

Summary

In the future, as KVS continues to evolve, Redis—a piece of software from an older generation—might start to fade away, or it might become a mere formality like a standard database access method similar to SQL.
I hope it's the latter, though.

Discussion