Memurai - A Redis Alternative for Windows

The Memurai team on Announcements • May 7, 2019 • 5 min read

Historically, developers searching for a supported Redis alternative for Windows had limited options. Currently, there is no official Windows build of Redis and most of the alternatives have several drawbacks such as the first options are not Windows native, the next options are not Redis(™) API compatible and the last options do not offer a robust Enterprise-grade commercial support. This means developers have been unable to fully integrate the most popular NoSQL data store into their Windows infrastructure and benefit from the performance and reliability offered by a native implementation.

Even the official Microsoft Open Tech port of Redis (which we helped to write) has been archived and is no longer supported. We think leaving Windows developers without a native solution sucks. And that’s why we decided to take the Redis source code and port it to run natively on Windows.

We call it Memurai.

Memurai, the Redis alternative for Windows

Memurai is a Redis 5-compatible cache and data store for Windows. It’s designed to provide the reliability and performance demanded by enterprise Windows environments. Just like Redis, Memurai uses an in-memory data set to achieve great performance at scale, and Memurai supports all the Redis features that you know and love, such as persistence, replication, transactions, LUA scripting, high-availability, pub/sub, cluster, modules, streams, and LRU eviction. In fact, Memurai supports all of the Redis API 5 eviction policies.

Out of all the Redis alternatives, Memurai is one of the strongest candidates since it runs natively on Windows, it integrates into your existing Windows workflows, and allows your team to be up to speed super fast with a scalable NoSQL datastore. You have the option to run Memurai as a Windows Service, making it perfectly suited to production environments.

The Memurai installation process is designed to be extremely easy and uses a standard MSI setup for installation and configuration.The configuration file syntax for Memurai is identical to Redis 5 syntax, apart from a few flags that are simply ignored by Memurai if present (mainly flags that are specific to Linux). Only flags from the Redis configuration file are supported and no new flags are introduced by Memurai. This means you don’t have to learn new tuning parameters, and any preexisting knowledge of configuring and tuning Redis applies directly to Memurai.

Just like Redis 5, Memurai supports multiple server roles. Configure Memurai to run with the sentinel role for high availability, improve scaling with the replica role, or use the cluster role to provide automatic partitioning of your data set. And as you’d probably expect at this point, each role is fully compatible with the Redis roles of the same name.

If you’re already running Redis instances on Linux, you can replicate data between Memurai and Redis, or use both Redis and Memurai within the same cluster. Running multiple instances of Memurai is no problem either and you can run more than one instance simultaneously (provided that you configure them to run on different ports).

For some Redis workloads, ensuring that your in-memory data set is safely written to disk is critical to ensuring the data set isn’t lost and that it can be quickly rebuilt if Redis restarts. Memurai supports persisting data to disk either synchronously or asynchronously. Internally, Redis uses the fork() system call to perform asynchronous writes, but that’s not an option for Memurai because fork() doesn’t exist on Windows. Instead, Memurai uses Windows shared memory to implement a start-of-the-art version of fork() that’s finely tuned for performance and allows Memurai to create data snapshots while still serving clients requests. Data can be written using the same AOF and RDB formats as Redis 5. RDB persists in-memory data to disk at specified intervals, and the AOF format is used to log every write operation received by the server, allowing Memurai to replay each log entry on startup to rebuild the in-memory data set.

Memurai comes with its own client, a command-line interface app known as memurai-cli.exe. But since Memurai is Redis-compatible and supports the full Redis 5 API, you’re able to use any redis client library to connect to Memurai and send commands. That includes using the official Redis CLI, redis-cli, on a Linux machine to connect a Memurai server running on Windows, or even connecting to a Redis instance on Linux with memurai-cli.exe.

But what if you’ve got favourite Redis modules that you want to use? Memurai supports the Redis 5 modules API too — Memurai was built to be a true drop-in replacement for Redis on Windows.

Get your Redis server Windows alternative

The majority of our customers start their exploration by test driving Memurai Developer for free. Once they are convinced that this is a robust solution, they reach out to us inquiring about Memurai Enterprise. Premium support and an unrestricted feature set paired with the strong performance speaks for itself for this Redis server windows option. We keep our documentation up to date, follow our Stack Overflow channels, and respond to our comunity. Give it a try or get in touch with a Memurai expert for a free consultation