Exploring Garnet: Microsoft’s High‑Performance Open‑Source In‑Memory Data Store
This article introduces Microsoft’s Garnet, an open‑source, Redis‑compatible in‑memory data store built on .NET, outlines its architecture, core advantages, supported APIs, and technical features, and provides step‑by‑step instructions for cloning, building a Docker image, and running the server.
Overview
Garnet is Microsoft’s open‑source, high‑performance, in‑memory data storage solution that aims to overcome Redis’s performance limits in certain scenarios while preserving the open‑source model and RESP compatibility.
Architecture
Core Advantages
Compatibility & Ease of Use : Uses the widely adopted RESP protocol, allowing existing Redis clients to connect without changes.
Scalability & Performance : Optimized client connections and batch processing increase throughput while reducing operational costs for large applications.
Low Latency & High Stability : Delivers superior high‑percentile latency, ensuring stability for critical business workloads.
Cross‑Platform & Modern Architecture : Built on the latest .NET stack, runs on Linux and Windows, and leverages the rich .NET ecosystem for extensibility.
Typical Use Cases
Garnet fits any application that currently uses Redis, KeyDB, or Dragonfly for caching, offering higher throughput, lower latency, and reduced sharding overhead. It is also suitable for new services that need a high‑performance cache layer to cut backend storage costs.
API Support
Garnet supports a wide range of Redis‑compatible commands for strings, sets, and objects, as well as cluster‑mode features such as sharding, replication, and dynamic key migration. It also allows RESP transactions, C# server‑side stored procedures, and custom operations on new object types.
Technical Features
The storage layer, Tsavorite, originates from the OSS FASTER project and provides multi‑tier storage (memory, SSD, cloud), non‑blocking checkpoints, persistence, and multi‑key transactions. Garnet also offers TLS, basic access control, and both single‑node and sharded‑replication cluster modes with efficient key migration.
Getting Started
Clone the Repository
git clone https://github.com/microsoft/garnet.git
cd garnetBuild the Docker Image
docker build -t tinywan/garnet:v1 .After the build completes, the image size is about 206 MB.
Run the Container
docker run --rm -it -p 3278:3278 tinywan/garnet:v1Default port: 3278
Connect with a Client
Use any Redis client, for example redis-cli:
redis-cli -p 3278
127.0.0.1:3278> set tinywan "Hi 3278"
OK
127.0.0.1:3278> get tinywan
"Hi 3278"Check Server Version
Run the info command to view Garnet’s version and runtime details:
127.0.0.1:3278> info
# Server
garnet_version:1.0.1
garnet_mode:standalone
os:Unix 4.15.0.137
processor_count:2
arch_bits:64
...Other Commands
127.0.0.1:3278> help keys
KEYS pattern
summary: Find all keys matching the given pattern
since: 1.0.0
group: generic
127.0.0.1:3278> help SADD
SADD key member [member ...]
summary: Add one or more members to a set
since: 1.0.0
group: setSigned-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Open Source Tech Hub
Sharing cutting-edge internet technologies and practical AI resources.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
