According to Stack Overflow Developer Survey 2023, Redis was one of the most admired databases. However, recent licensing changes have sparked an uproar in the open source community which might skew the results next year as people look at Redis alternatives.
In this post, we will briefly cover what Redis is, and why in-memory databases are so popular. We will then discuss the recent changes in its license and its impacts, and then finally, examine some of the reputable databases that you can use as Redis alternatives.
Let’s dive right in!
What is Redis
Redis, which stands for Remote Dictionary Server, is an open-source, in-memory data structure store – which means that instead of storing the data on your hard disk, it stores it in the RAM.
It’s primarily used as a database, cache, and message broker, and supports various data structures, including:
- Strings
- Hashes
- Lists, sets
- Sorted sets with range queries
- Bitmaps
- Hyperloglogs
- Geospatial indexes
- Streams
All of which makes it very flexible and versatile for a wide range of applications.
Advantages of In-Memory Databases
If you know a little bit about web applications, you might have already heard of traditional database systems such as MySQL and MariaDB – but what makes in-memory databases special?
- Speed: In-memory databases use RAM instead of hard disk drives (HDD) or solid-state drives (SSD) to store data, drastically reducing the latency of reading and writing data. Using an in-memory database can deliver extremely fast read and write operations, making them suitable for scenarios where low-latency is critical.
- Real-Time Analytics: These databases are ideal for applications that process a lot of data, such as advanced planning, simulation, and analytics.
- Scalability: In-memory databases are simpler to scale up and down compared to other databases, because of how they store data.
Redis License Changes in 2024
In 2024, Redis changed its licensing from an open-source BSD license to a dual license model, adopting the Redis Source Available License version 2 (RSALv2) and the Server-Side Public License version 1 (SSPLv1).
For most users, including software vendors and hosting customers, this license change won’t affect their operations. If you’re using Redis for caching within your web applications or internally within your organization, the new licensing terms do not apply.
However, the change significantly impacts companies offering managed Redis services, such as AWS ElastiCache, Upstash, Railway, and DigitalOcean. These providers, which were previously able to use the Redis source code free of charge, will now be required to enter into commercial agreements with Redis to use the source code.
These providers can no longer resell Redis as a service as part of their business without some kind of licensed contribution back.
Top Alternatives to Redis
If you’re looking for other in-memory database solutions to replace Redis, then we recommend considering the following Redis alternatives.
1. Valkey
Valkey, a fork of Redis, is a new project that aims to resume development of the formerly open-source Redis project. It aims to be a high-performance data structure server primarily serving key/value workloads, hence the name val-key.
The fork was triggered by Redis Labs’ licensing changes, which made Redis incompatible with the standard definition of “open source.” The large cloud vendors had profited from the open source Redis version and, as a result, Valkey is backed by major tech players including AWS, Google, Oracle, and Snap Inc.
Just like Redis, it supports a wide range of native structures, and has an extensible plugin system for adding new data structures and access patterns. However, At the time of writing, Valkey is still not a polished product, and things are evolving. While it serves as a drop-in replacement for Redis, users should be aware of its ongoing development and potential rough edges.
2. Dragonfly DB
Dragonfly is a powerful in-memory data store that offers extreme performance, reliability, and scalability. It is fully compatible with Redis APIs, making it a seamless drop-in replacement for Redis – you can use the same SDKs and tooling without any code changes.
It’s optimized for modern cloud computing, ensuring sub-millisecond reads and real-time experiences for your customers, and claims to deliver 25x more throughput compared to legacy software. Unlike traditional in-memory data stores, Dragonfly makes efficient use of memory during snapshotting which reduces the risk of out-of-memory outages.
A single Dragonfly instance can handle workloads of up to 1TB, which means you no longer need to maintain complex distributed clusters. Additionally, it natively supports an eventually consistent primary-replica model, i.e. if the primary node fails, Dragonfly automatically fails over to the replica.
3. Memcached
Memcached is a free and open-source, high-performance, distributed memory object caching system designed to speed up dynamic web applications by alleviating database load. It’s useful for caching small arbitrary data (such as strings or objects) from database results, API calls, or page rendering.
It follows a Client-Server Architecture where clients are given a list of available Memcached servers, and are then able to choose a server based on the “key.” Servers store values with their keys in an internal hash table, and evict old data (if out of memory) or reuse memory. The server doesn’t care about the data’s structure, it only stores a key, an expiration time, optional flags, and raw (pre-serialized) data.
It’s optimized for speed and lock-friendliness, and therefore queries execute in well under 1ms on slow machines – and serve millions of keys per second on high-end servers. It also uses a least recently used cache by default, i.e., items expire after a specified time, ensuring low latency and efficient memory usage. Its simplicity and efficiency make it a popular choice for caching data.
4. Hazelcast
Hazelcast Platform is a unified real-time data platform that allows companies to take instant action on real-time data. It combines high-performance stream processing capabilities with a built-in fast data store, enabling businesses to automate, streamline, and enhance critical processes and applications.
Hazelcast offers high-speed caching, resulting in improved throughput and lower latency – this allows you to process data quickly and efficiently. It also provides a high-performance, distributed, and parallelized environment that reduces the need for low-level infrastructure management.
5. Key DB
KeyDB is a fully open-source database that serves as a faster drop-in alternative to Redis. It’s backed by Snap Inc., and is designed for scalability and high performance which allows it to handle heavy workloads – benchmarking at over 1 million ops/sec.
KeyDB supports various data structures, including:
- Strings
- Hashes
- Lists
- Sets
- Sorted sets
- Bitmaps
- Hyperloglogs
- Geospatial indexes
- Streams.
To store the data on disk, you can either periodically dump the dataset to disk, or append each command to a disk-based log.
KeyDB scales both vertically (single node) and horizontally (active-replication or sharded cluster-mode) to meet larger workloads. You can set-up active-replica nodes to simplify high availability setups without requiring sentinel nodes for failover. Additionally, its multithreaded architecture outperforms Redis on a per-node basis.
6. MongoDB
MongoDB offers an in-memory storage engine that allows for more predictable latency of database operations by avoiding disk I/O. Unlike other storage engines, the in-memory storage engine doesn’t maintain any on-disk data, including configuration data, indexes, or user credentials, which makes it comparable to other in-memory databases.
To use the in-memory storage engine, you can either specify –storageEngine inMemory as a command-line option, or include the storage.engine: inMemory in the YAML configuration file. Additionally, you need to specify the data directory (–dbpath or storage.dbPath) even though the in-memory storage engine doesn’t write data to the filesystem.
By default, the in-memory storage engine uses 50% of physical RAM minus 1 GB, and if a write operation would exceed the specified memory size, MongoDB throws an error. Since the in-memory storage engine for MongoDB doesn’t persist data after process shutdown, it should only be used for scenarios where data persistence is not required.
7. RethinkDB
RethinkDB is an open-source, JSON database specially built from the ground up for the realtime web with scalability and performance in mind. It has a unique approach where, instead of polling for changes, the developer can configure RethinkDB to continuously push changes and update query results to applications in real-time. This push architecture dramatically reduces the time and effort necessary to build scalable realtime apps.
In RethinkDB, every database process uses memory to store intermediate results and maintain internal state. The memory used varies significantly depending on the type of queries run, and the size of documents stored in the database. However, RethinkDB’s page cache keeps recently used data in memory to minimize disk access.
It’s important to note that RethinkDB can handle databases much larger than the amount of main memory available on a server. However, the management of memory is crucial for the performance of the database and the applications that rely on it. Check out the benchmarks on RethinkDB website to get a better understanding of how performance scales with the hardware.
8. Amazon MemoryDB
Amazon MemoryDB for Redis is a powerful in-memory database service that provides ultra-fast performance and durability for low-latency applications. It maintains compatibility with Redis, allowing you to use the same flexible data structures, APIs, and commands without worrying about the underlying infrastructure.
MemoryDB stores your entire dataset in memory, resulting in microsecond read latency and single-digit millisecond write latency. It is built with enhanced IO Multiplexing to improve throughput and latency at scale that allows it to handle over 13 trillion requests per day, and support peaks of 160 million requests per second.
It also supports horizontally scaling databases by building clusters, or vertically scaling by adjusting the machine type. You can store your data across multiple availability zones for fast failover, and take advantage of its distributed transaction log for data durability, consistency, and recoverability.
9. SAP HANA
SAP HANA (High-performance Analytic Appliance) is a multi-model database that stores data in its memory instead of on a disk. Similar to other databases discussed in this post, HANA offers split-second response times – which is useful for applications requiring fast compute speed and the ability to handle large spikes in traffic.
It supports column-oriented in-memory design which allows running advanced analytics alongside high-speed transactions in a single system. Moreover, it supports both structured and unstructured data, and offers advanced search, analytics, and data integration capabilities.
It is ACID complaint, i.e., one transaction either fails completely or succeeds – there is no-inbetween. You can use it to either host multiple tenant databases in one system to pool resources, or distribute your database across multiple machines in a cluster to scale it up without compromising on security.
Wrapping Up
In this post, we have discussed some of the popular in-memory Redis alternative databases available for building web applications. Each database has its own strengths and weaknesses, so the choice depends on specific use cases and requirements.
If you’re building web applications, you should consider using RunCloud for seamless server management.
RunCloud simplifies server setup, monitoring, and maintenance whether you’re on AWS, Google Cloud, or any other provider.
RunCloud streamlines the process of deploying applications, making it easier for developers to focus on what they do best! Sign up for RunCloud and experience hassle-free server management today!