{"id":982563,"date":"2024-03-13T11:33:11","date_gmt":"2024-03-13T18:33:11","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/?post_type=msr-project&#038;p=982563"},"modified":"2024-06-04T17:09:47","modified_gmt":"2024-06-05T00:09:47","slug":"garnet","status":"publish","type":"msr-project","link":"https:\/\/www.microsoft.com\/en-us\/research\/project\/garnet\/","title":{"rendered":"Garnet"},"content":{"rendered":"<section class=\"mb-3 moray-highlight\">\n\t<div class=\"card-img-overlay mx-lg-0\">\n\t\t<div class=\"card-background  has-background-auburn card-background--full-bleed\">\n\t\t\t<img loading=\"lazy\" decoding=\"async\" width=\"1921\" height=\"720\" src=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2024\/03\/garnet-bg-1920x720-1.png\" class=\"attachment-full size-full\" alt=\"Garnet background\" style=\"\" srcset=\"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2024\/03\/garnet-bg-1920x720-1.png 1921w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2024\/03\/garnet-bg-1920x720-1-300x112.png 300w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2024\/03\/garnet-bg-1920x720-1-1024x384.png 1024w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2024\/03\/garnet-bg-1920x720-1-768x288.png 768w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2024\/03\/garnet-bg-1920x720-1-1536x576.png 1536w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2024\/03\/garnet-bg-1920x720-1-1600x600.png 1600w, https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2024\/03\/garnet-bg-1920x720-1-240x90.png 240w\" sizes=\"auto, (max-width: 1921px) 100vw, 1921px\" \/>\t\t<\/div>\n\t\t<!-- Foreground -->\n\t\t<div class=\"card-foreground d-flex mt-md-n5 my-lg-5 px-g px-lg-0\">\n\t\t\t<!-- Container -->\n\t\t\t<div class=\"container d-flex mt-md-n5 my-lg-5 \">\n\t\t\t\t<!-- Card wrapper -->\n\t\t\t\t<div class=\"w-100 w-lg-col-5\">\n\t\t\t\t\t<!-- Card -->\n\t\t\t\t\t<div class=\"card material-md-card py-5 px-md-5\">\n\t\t\t\t\t\t<div class=\"card-body \">\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\n<h1 class=\"wp-block-heading\" id=\"garnet\">Garnet<\/h1>\n\n\n\n<p>A high-performance, extensible, and low-latency remote cache-store from&nbsp;Microsoft Research<\/p>\n\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t<\/div>\n\t\t<\/div>\n\t<\/div>\n<\/section>\n\n\n\n\n\n<h2 class=\"wp-block-heading\" id=\"introducing-garnet\">Introducing Garnet<\/h2>\n\n\n\n<p>Garnet is a research project from Microsoft Research. It is a remote cache-store designed to offer high performance, extensibility, and low latency. Garnet is thread-scalable within a single node. It also supports sharded cluster execution, with replication, checkpointing, failover, and transactions. It can operate over main memory as well as tiered storage (such as SSD and&nbsp;Azure Storage). Garnet supports a rich API surface and a powerful extensibility model.<\/p>\n\n\n\n<p>Garnet uses Redis&#8217; <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https:\/\/redis.io\/docs\/reference\/protocol-spec\/\">RESP<span class=\"sr-only\"> (opens in new tab)<\/span><\/a> as the starting point for its wire protocol. Thus, one can use Garnet with unmodified Redis clients&nbsp;<a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/redis.io\/resources\/clients\/\" target=\"_blank\" rel=\"noopener noreferrer\">available<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>&nbsp;in most programming languages, for example, with&nbsp;<a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" href=\"https:\/\/github.com\/StackExchange\/StackExchange.Redis\" target=\"_blank\" rel=\"noopener noreferrer\">StackExchange.Redis<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>&nbsp;in C#. Compared to other open-source cache-stores, you get much better performance, latency, extensibility, and durability features.<\/p>\n\n\n\n<p>Version of Garnet have been deployed in several real-world use cases at Microsoft, such as those in the Windows & Web Experiences Platform, Azure Resource Manager, and Azure Resource Graph. Garnet is also now open-source at <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https:\/\/github.com\/microsoft\/garnet\">https:\/\/github.com\/microsoft\/garnet<span class=\"sr-only\"> (opens in new tab)<\/span><\/a>.<\/p>\n\n\n\n<div style=\"padding-bottom:32px; padding-top:32px\" class=\"wp-block-msr-immersive-section alignfull row has-background has-light-purple-20-background-color has-text-color has-black-color wp-block-msr-immersive-section\">\n\t\n\t<div class=\"container\">\n\t\t<div class=\"wp-block-msr-immersive-section__wrapper\">\n\t\t\t<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h3 class=\"wp-block-heading\" id=\"high-performance\">High Performance<\/h3>\n\n\n\n<p>Garnet uses a thread-scalable storage layer called Tsavorite, which provides cache-friendly shared-memory scalability with tiered storage support. Garnet supports cluster mode (sharding and replication). It has a fast pluggable network design to get high end-to-end performance (throughput and 99th percentile latency).<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h3 class=\"wp-block-heading\" id=\"rich-extensible\">Rich & Extensible<\/h3>\n\n\n\n<p>Garnet uses the popular RESP wire protocol, allowing it to be used with unmodified Redis clients in any language. Garnet supports a large fraction of the Redis API surface, including raw strings and complex data structures such as sorted sets, bitmaps, and HyperLogLog. Garnet also has scalable extensibility and transactional stored procedure capabilities.<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<h3 class=\"wp-block-heading\" id=\"modern-secure\">Modern & Secure<\/h3>\n\n\n\n<p>The Garnet server is written in modern .NET C#, and runs efficiently on almost any platform. It works equally well on Windows and Linux, and is designed to not incur garbage collection overheads. You can also extend Garnet&#8217;s capabilities using new .NET data structures to go beyond the core API. Finally, Garnet has efficient TLS support out of the box.<\/p>\n<\/div>\n<\/div>\t\t<\/div>\n\t<\/div>\n\n\t<\/div>\n\n\n\n<div style=\"padding-bottom:32px; padding-top:32px\" class=\"wp-block-msr-immersive-section alignfull row has-background has-lighter-gray-background-color has-text-color has-black-color wp-block-msr-immersive-section\">\n\t\n\t<div class=\"container\">\n\t\t<div class=\"wp-block-msr-immersive-section__wrapper\">\n\t\t\t<h2 class=\"wp-block-heading\" id=\"key-advantages\">Key advantages<\/h2>\n\n\n\n<p>Garnet offers several unique benefits:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Garnet adopts the popular RESP wire protocol as a starting point, which makes it possible to use Garnet from unmodified Redis clients available in most programming languages today.<\/li>\n\n\n\n<li>Garnet offers much better throughput and scalability with many client connections and small batches, relative to comparable open-source cache-stores, leading to cost savings for large apps and services.<\/li>\n\n\n\n<li>Garnet demonstrates extremely low client latencies (often less than 300 microseconds at the 99.9<sup>th<\/sup>&nbsp;percentile) using commodity cloud (Azure) VMs with accelerated TCP enabled, which is critical to real-world scenarios.<\/li>\n\n\n\n<li>Based on the latest .NET technology, Garnet is cross-platform, extensible, and modern. It is designed to be easy to develop for and evolve, without sacrificing performance in the common case. We leveraged the rich library ecosystem of .NET for API breadth, with open opportunities for optimization. Thanks to our careful use of .NET, Garnet achieves state-of-the-art performance on both Linux and Windows.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"more-information\">More information<\/h2>\n\n\n\n<p>Learn more about Garnet from the following links:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>GitHub: <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https:\/\/github.com\/microsoft\/garnet\">https:\/\/github.com\/microsoft\/garnet<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n\n\n\n<li>Website: <a class=\"msr-external-link glyph-append glyph-append-open-in-new-tab glyph-append-xsmall\" rel=\"noopener noreferrer\" target=\"_blank\" href=\"https:\/\/microsoft.github.io\/garnet\">https:\/\/microsoft.github.io\/garnet<span class=\"sr-only\"> (opens in new tab)<\/span><\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p><sub>Redis is a registered trademark of Redis Ltd. Any rights therein are reserved to Redis Ltd. Any use by Microsoft is for referential purposes only and does not indicate any sponsorship, endorsement or affiliation between Redis and Microsoft.<\/sub><\/p>\t\t<\/div>\n\t<\/div>\n\n\t<\/div>\n\n\n\n<div style=\"height:20px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A high-performance, extensible, and low-latency remote cache-store from&nbsp;Microsoft Research Garnet is a research project from Microsoft Research. It is a remote cache-store designed to offer high performance, extensibility, and low latency. Garnet is thread-scalable within a single node. It also supports sharded cluster execution, with replication, checkpointing, failover, and transactions. It can operate over main [&hellip;]<\/p>\n","protected":false},"featured_media":1014360,"template":"","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","footnotes":""},"research-area":[13563],"msr-locale":[268875],"msr-impact-theme":[],"msr-pillar":[],"class_list":["post-982563","msr-project","type-msr-project","status-publish","has-post-thumbnail","hentry","msr-research-area-data-platform-analytics","msr-locale-en_us","msr-archive-status-active"],"msr_project_start":"","related-publications":[476583,501413,664920],"related-downloads":[],"related-videos":[],"related-groups":[957177],"related-events":[],"related-opportunities":[],"related-posts":[1011459],"related-articles":[],"tab-content":[],"slides":[],"related-researchers":[{"type":"user_nicename","display_name":"Badrish Chandramouli","user_id":31166,"people_section":"Section name 0","alias":"badrishc"},{"type":"user_nicename","display_name":"Vasileios Zois","user_id":38841,"people_section":"Section name 0","alias":"vazois"},{"type":"user_nicename","display_name":"Lukas Maas","user_id":38076,"people_section":"Section name 0","alias":"lumaas"},{"type":"user_nicename","display_name":"Yoganand Rajasekaran","user_id":39651,"people_section":"Section name 0","alias":"yrajas"},{"type":"user_nicename","display_name":"Tal Zaccai","user_id":37956,"people_section":"Section name 0","alias":"talzacc"}],"msr_research_lab":[199565],"msr_impact_theme":[],"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/982563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/types\/msr-project"}],"version-history":[{"count":43,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/982563\/revisions"}],"predecessor-version":[{"id":1015974,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/982563\/revisions\/1015974"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media\/1014360"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media?parent=982563"}],"wp:term":[{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=982563"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=982563"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=982563"},{"taxonomy":"msr-pillar","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-pillar?post=982563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}