next image
next image
Fernando Doglio September 22, 2023

Unraveling Redis on Windows: The WSL/WSL2 Experience

Technical articles and news about Memurai.

Redis stands out as a seriously powerful and efficient in-memory database. So, it's no surprise that lots of folks want to take it for a spin outside of its usual playground. You know, like giving it a whirl on a different OS.

Now, Windows happens to be a pretty big player in the server operating systems game (hanging out right behind those *nix distributions). So, it's totally reasonable to assume that getting Redis to work on your Windows server should be a piece of cake.

Well, here's the thing: that assumption's not exactly right. In fact, it’s quite wrong.

The official version of this amazing key-value database doesn't have a native version that can work well on Bill Gates's favorite OS.

Don't fret though! There are other ways to make it work. One option is using WSL/WSL2, short for Windows Subsystem for Linux. But guess what? In this article, I'm gonna expand on why that might not be the slickest route and what truly is the one and only fix for this problem.

Running Redis on Windows with the WSL

Let’s pretend for a second that even though you know this is not the best option, you still want to go ahead and try running Redis on Windows using the WSL.

According to Redis’ official documentation, you can definitely do it, provided you have Windows 10 (version 2004 and above) or Windows 11, that is.

So, let's play along and analyze what that means for you.

Advantages of running Windows with WSL/WSL2

  • Ease of Use: With WSL you can emulate Linux system calls while running everything as a Windows process. This, in turn, keeps it all within Windows but has comparatively poorer performance. WSL2, on the other hand, makes it relatively straightforward to set up and run Redis on a Windows machine by acting as a Linux VM. The process is straightforward, of course, assuming you’ve installed Ubuntu (or your preferred OS) beforehand. With the deeper Linux integration that WSL2 provides, you get to run Redis in a more native environment; however, there is the extra networking configuration needed to access it from outside.
  • Familiarity: If you're already comfortable with Linux-based environments, using WSL to run Redis lets you work with tools and commands you're accustomed to.
  • Development Flexibility: Developers who primarily work with Windows but need to develop applications that utilize Redis can do so more easily without needing to set up a separate Linux environment.
  • Resource Efficiency: While WSL doesn't fall into this category, given how comparatively bad performance it has in some regards (especially around file system access), WSL2 provides a lightweight virtualization approach, consuming fewer resources compared to running a full virtual machine or using a separate Linux system.
  • Access to Linux Ecosystem: By utilizing WSL, you gain access to the wider Linux software ecosystem, which could be useful for various development and testing scenarios.
  • Command-Line Power: WSL enables you to take advantage of the rich command-line capabilities of Linux, which can be beneficial for managing and interacting with Redis instances. Everyone knows developers love their CLIs and terminals, so this is a solid win.
  • Community Support: Since WSL is widely used, there's a substantial community and available resources for troubleshooting and assistance if you encounter any issues while running Redis.

Of course, this sounds great, but don’t go on enabling WSL on your system just yet. Let’s first review the downside of this approach.

Disadvantages of running Redis on WSL/WSL2

  • Performance Overhead: The abstraction layer added between Windows and Linux inevitably adds extra resource consumption, translating into less performance.
  • Limited System Interaction: Certain system-level interactions and hardware access might not work as seamlessly within this environment, potentially affecting some Redis features or performance aspects.
  • File System Compatibility: Between WSL and WSL2, some file system calls are either not implemented or don’t work as efficiently as they do on the native system. In other words, the file system access is something that's not reliable enough, especially if you consider that we’re talking about a database that eventually would have to store data there.
  • Resource Limitations: WSL/WSL2 operates within Windows resource limits, which could lead to constraints in terms of memory, CPU, and other resources available to your Redis instance.
  • Dependency on Windows Updates: WSL/WSL2’s compatibility and functionality can be influenced by Windows updates, potentially causing disruptions or compatibility issues with Redis.
  • Ecosystem Mismatch: If your development team primarily uses Windows-based tools, integrating Redis through this process might lead to inconsistencies in development workflows and tools.
  • Vendor Support: Some Redis vendors or support services might not offer comprehensive assistance for instances running on WSL due to its unique environment.
  • Lack of support for Windows server versions: While WSL/WSL2 is not the problem here, the official Redis version that can run using this method is limited to Windows 10 and 11, versions that are not ideal for high-end production servers.

While all of these disadvantages are very valid and should be taken into account when making the final call, the last one, limiting you to a set of versions that are not "ideal" for 24/7 server operations, is definitely a big red flag that you should consider.

Especially so, if there is a simple alternative that can run on your Windows server without any need for extra work (in fact, you just need two clicks to get it working).

Running Redis on Windows with Memurai

Consider a scenario where all you had to do was download it from a website, and then double-click the installer. And you’d immediately have Redis running on your favorite Windows server.

Wouldn’t that be amazing?

Guess what? That’s what you get when going with Memurai.

Memurai is the evolution of Microsoft’s Redis on Windows project. Originally maintained by Microsoft, when the project died (allowing native Windows compatibility with Redis 3.0), Memurai was born. Currently, Memurai provides full compatibility with Redis 7.0, including all major features making it the perfect alternative if what you need is a fast and reliable in-memory database for your Windows servers.

Why use Memurai over Redis with WSL/WSL2?

By now, the answer should be obvious, but let’s dig a little deeper to understand the major advantages of Memurai over a Redis+WSL combo.

  • Native Windows Support: Memurai is designed and optimized to run natively on Windows without requiring any compatibility layers or workarounds like WSL. This can result in better performance and a more seamless experience on the Windows platform.
  • Performance: Since Memurai is built specifically for Windows, it can take advantage of Windows-specific optimizations, leading to potentially better performance compared to running Redis through a compatibility layer like WSL.
  • Ease of Installation: Memurai offers a straightforward installation process on Windows, eliminating the need for configuring WSL, installing your favorite * nix distribution and only then starting to deal with potential compatibility issues between Redis and WSL.
  • Integrated Ecosystem: Using Memurai provides a more integrated ecosystem for Windows developers, as it aligns with other Windows tools and environments, streamlining development workflows.
  • Windows Services: Memurai can be installed as a Windows service, allowing you to manage it through Windows' native service management tools. This provides better control, monitoring, and ease of use compared to managing Redis through WSL.
  • File System Compatibility: Memurai's implementation takes into account Windows file system behaviors, ensuring smoother data persistence and management compared to potential issues that might arise when using Redis in WSL.
  • Support and Documentation: As a commercial product, Memurai offers professional support and documentation tailored to its Windows implementation. This can be valuable when encountering issues or seeking guidance.
  • Seamless Updates: Memurai's update process is designed to be Windows-friendly, ensuring that you can easily apply updates without having to navigate between Windows and Linux environments.
  • Compatibility Assurance: Memurai is actively developed and tested for compatibility with Windows, ensuring that you're using a product that's designed to work seamlessly on the Windows platform.

To sum up, although Redis on WSL/WSL2 might appear intriguing as an option, Memurai presents a convincing argument for individuals in search of high-performance solutions, streamlined administration, and effortless incorporation into the Windows environment.

Its inherent methodology and exclusive emphasis on Windows position it as an outstanding selection when it comes to implementing Redis on Windows platforms.

Try Memurai!

So, if you're aiming to unlock the full potential of Redis on Windows, Memurai might just be the solution you've been waiting for.

You can try Memurai Developer Edition completely for free and evaluate it until you’re ready to make the leap and request the Enterprise Edition.