CINXE.COM
<!doctype html> <html lang="en" dir="ltr" class="blog-wrapper blog-list-page plugin-blog plugin-id-default"> <head> <meta charset="UTF-8"> <meta name="generator" content="Docusaurus v2.4.0"> <title data-rh="true">Blog | Apache Kvrocks™</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://kvrocks.apache.org/blog"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="og:title" content="Blog | Apache Kvrocks™"><meta data-rh="true" name="description" content="Blog"><meta data-rh="true" property="og:description" content="Blog"><meta data-rh="true" name="docusaurus_tag" content="blog_posts_list"><meta data-rh="true" name="docsearch:docusaurus_tag" content="blog_posts_list"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://kvrocks.apache.org/blog"><link data-rh="true" rel="alternate" href="https://kvrocks.apache.org/blog" hreflang="en"><link data-rh="true" rel="alternate" href="https://kvrocks.apache.org/blog" hreflang="x-default"><link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="Apache Kvrocks™ RSS Feed"> <link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="Apache Kvrocks™ Atom Feed"><link rel="stylesheet" href="/assets/css/styles.83fea2f5.css"> <link rel="preload" href="/assets/js/runtime~main.4a3abd4f.js" as="script"> <link rel="preload" href="/assets/js/main.da7164cf.js" as="script"> </head> <body class="navigation-with-keyboard"> <script>!function(){function e(e){document.documentElement.setAttribute("data-theme",e)}var t=function(){var e=null;try{e=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(e){}return e}()||function(){var e=null;try{e=localStorage.getItem("theme")}catch(e){}return e}();null!==t?e(t):window.matchMedia("(prefers-color-scheme: dark)").matches?e("dark"):(window.matchMedia("(prefers-color-scheme: light)").matches,e("light"))}()</script><div id="__docusaurus"> <div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top navbarHideable_m1mJ"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/logo.svg" alt="apache-kvrocks" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/logo.svg" alt="apache-kvrocks" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">Apache Kvrocks</b></a></div><div class="navbar__items navbar__items--right"><a class="navbar__item navbar__link" href="/docs/getting-started">Docs</a><a class="navbar__item navbar__link" href="/download">Download</a><a class="navbar__item navbar__link" href="/community/">Community</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/blog">Blog</a><a class="navbar__item navbar__link" href="/users">Users</a><a href="https://github.com/apache/kvrocks" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link" aria-label="GitHub repository"></a><div class="searchBox_ZlJk"><div class="navbar__search searchBarContainer_NW3z"><input placeholder="Search" aria-label="Search" class="navbar__search-input"><div class="loadingRing_RJI3 searchBarLoadingRing_YnHq"><div></div><div></div><div></div><div></div></div><div class="searchHintContainer_Pkmr"><kbd class="searchHint_iIMx">ctrl</kbd><kbd class="searchHint_iIMx">K</kbd></div></div></div><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link">ASF</a><ul class="dropdown__menu"><li><a href="https://www.apache.org/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Foundation</a></li><li><a href="https://www.apache.org/licenses/" target="_blank" rel="noopener noreferrer" class="dropdown__link">License</a></li><li><a href="https://www.apache.org/events/current-event.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Events</a></li><li><a href="https://www.apache.org/security/" target="_blank" rel="noopener noreferrer" class="dropdown__link">Security</a></li><li><a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Sponsorship</a></li><li><a href="https://privacy.apache.org/policies/privacy-policy-public.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Privacy</a></li><li><a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener noreferrer" class="dropdown__link">Thanks</a></li></ul></div><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-live="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">Recent posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/kqir-query-engine">KQIR: a query engine for Apache Kvrocks that supports both SQL and RediSearch queries</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/kvrocks-2023-in-review">Apache Kvrocks 2023 In Review</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/kvrocks-graduated-as-tlp">Kvrocks graduated as an Apache Top-Level-Project</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/go-redis-kvrocks-opentelemetry">Getting started with Kvrocks and go-redis</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/how-we-use-rocksdb-in-kvrocks">How we use RocksDB in Kvrocks?</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/kqir-query-engine">KQIR: a query engine for Apache Kvrocks that supports both SQL and RediSearch queries</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2024-06-02T00:00:00.000Z" itemprop="datePublished">June 2, 2024</time> · <!-- -->10 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/pragmatwice" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/pragmatwice.png" alt="PragmaTwice"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/pragmatwice" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">PragmaTwice</span></a></div><small class="avatar__subtitle" itemprop="description">Apache Kvrocks PMC Member</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><h2 class="anchor anchorWithHideOnScrollNavbar_WYt5" id="intro">Intro<a href="#intro" class="hash-link" aria-label="Direct link to Intro" title="Direct link to Intro"></a></h2><p>TL;DR:</p><p><img loading="lazy" alt="demo" src="/assets/images/demo-bf51c4ef55445434fbb4aaef6157ec67.png" width="3116" height="2596" class="img_ev3q"></p><p>Pretty cool, right? Let's dive in!</p><p>(The full example is provided in <a href="/blog/kqir-query-engine/#try-it">the final section</a>.)</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about KQIR: a query engine for Apache Kvrocks that supports both SQL and RediSearch queries" href="/blog/kqir-query-engine"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/kvrocks-2023-in-review">Apache Kvrocks 2023 In Review</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2024-01-07T00:00:00.000Z" itemprop="datePublished">January 7, 2024</time> · <!-- -->3 min read</div></header><div class="markdown" itemprop="articleBody"><p>The year 2023 is a small milestone for the community in open source, and it is also a new starting point. <strong>Kvrocks successfully graduated from the incubator to become an Apache top-level project in June, which is a great affirmation for the community's health and sustainability</strong>. At the same time, there are also some exciting progress in the project and community.</p><p>Before we start, we would like to thanks all the contributors and users who have been supporting Apache Kvrocks. We can't make it without you!</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Apache Kvrocks 2023 In Review" href="/blog/kvrocks-2023-in-review"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/kvrocks-graduated-as-tlp">Kvrocks graduated as an Apache Top-Level-Project</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2023-07-01T00:00:00.000Z" itemprop="datePublished">July 1, 2023</time> · <!-- -->6 min read</div></header><div class="markdown" itemprop="articleBody"><p><a href="https://news.apache.org/foundation/entry/the-apache-software-foundation-announces-new-top-level-project-apache-kvrocks" target="_blank" rel="noopener noreferrer">Wilmington, DE – June 28, 2023 – The Apache Software Foundation(ASF) announced Kvrocks has graduated from the incubator as a Top-Level-Project.</a> Means that the Kvrocks community has met the Apache Foundation's requirements for The Apache Way practices, diversity, and open communication. Graduation marks a new starting point, while much work is still necessary for the community's long-term health.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Kvrocks graduated as an Apache Top-Level-Project" href="/blog/kvrocks-graduated-as-tlp"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/go-redis-kvrocks-opentelemetry">Getting started with Kvrocks and go-redis</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2022-11-20T00:00:00.000Z" itemprop="datePublished">November 20, 2022</time> · <!-- -->4 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/vmihailenco" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/vmihailenco.png" alt="Vladimir Mihailenco"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/vmihailenco" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Vladimir Mihailenco</span></a></div><small class="avatar__subtitle" itemprop="description">Grumpy Gopher</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>Learn how to use go-redis client to get started with Apache Kvrocks, a distributed key-value NoSQL database.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about Getting started with Kvrocks and go-redis" href="/blog/go-redis-kvrocks-opentelemetry"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/how-we-use-rocksdb-in-kvrocks">How we use RocksDB in Kvrocks?</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2021-12-26T00:00:00.000Z" itemprop="datePublished">December 26, 2021</time> · <!-- -->8 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/git-hulk" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/git-hulk.png" alt="Hulk Lin"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/git-hulk" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Hulk Lin</span></a></div><small class="avatar__subtitle" itemprop="description">Apache Kvrocks Founders</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>Kvrocks is an open-source key-value database that is based on rocksdb and compatible with Redis protocol. Intention to decrease the cost of memory and increase the capability while compared to Redis. We would focus on how we use RocksDB features to improve the performance of the Redis on disk. Hopes this helps people who want to improve performance on RocksDB.</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about How we use RocksDB in Kvrocks?" href="/blog/how-we-use-rocksdb-in-kvrocks"><b>Read More</b></a></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/how-to-implement-bitmap-on-rocksdb">How to implement bitmap on RocksDB?</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2021-11-07T00:00:00.000Z" itemprop="datePublished">November 7, 2021</time> · <!-- -->7 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/git-hulk" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://github.com/git-hulk.png" alt="Hulk Lin"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/git-hulk" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Hulk Lin</span></a></div><small class="avatar__subtitle" itemprop="description">Apache Kvrocks Founders</small></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>Most developers should be familiar with bitmap, in addition to the storage implementation for the bloom filter, and many databases also provide bitmap type indexes. For memory storage, the bitmap can be regarded as the special type of sparse bit array, which would not cause the read-write amplification issue (means read/write bytes far more than the request). While Redis supports bit-related operations on string types, it is a big challenge for disk KV-based storage like <a href="https://github.com/apache/kvrocks" target="_blank" rel="noopener noreferrer">Kvrocks</a>. So this article mainly discusses "<strong>How to reduce disk read/write amplification on RocksDB</strong>".</p></div><footer class="row docusaurus-mt-lg"><div class="col text--right"><a aria-label="Read more about How to implement bitmap on RocksDB?" href="/blog/how-to-implement-bitmap-on-rocksdb"><b>Read More</b></a></div></footer></article><nav class="pagination-nav" aria-label="Blog list page navigation"></nav></main></div></div></div><footer class="footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Docs</div><ul class="footer__items clean-list"><li class="footer__item"><a class="footer__link-item" href="/docs/getting-started">Getting started</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/supported-commands">Supported commands</a></li><li class="footer__item"><a class="footer__link-item" href="/community/contributing">How to contribute</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://join.slack.com/t/kvrockscommunity/shared_invite/zt-p5928e3r-OUAK8SUgC8GOceGM6dAz6w" target="_blank" rel="noopener noreferrer" class="footer__link-item">Slack<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://github.com/apache/kvrocks/issues" target="_blank" rel="noopener noreferrer" class="footer__link-item">Issue Tracker<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://lists.apache.org/list.html?dev@kvrocks.apache.org" target="_blank" rel="noopener noreferrer" class="footer__link-item">Mailing list<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><div class="col footer__col"><div class="footer__title">Repositories</div><ul class="footer__items clean-list"><li class="footer__item"><a href="https://github.com/apache/kvrocks" target="_blank" rel="noopener noreferrer" class="footer__link-item">Kvrocks<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://github.com/apache/kvrocks-website" target="_blank" rel="noopener noreferrer" class="footer__link-item">Website<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li class="footer__item"><a href="https://github.com/apache/kvrocks-controller" target="_blank" rel="noopener noreferrer" class="footer__link-item">Controller<svg width="13.5" height="13.5" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div></div><div class="footer__bottom text--center"><div class="margin-bottom--sm"><a href="https://www.apache.org/" rel="noopener noreferrer" class="footerLogoLink_BH7S"><img src="/img/asf_logo.svg" alt="Apache logo" class="themedImage_ToTc themedImage--light_HNdA footer__logo" height="128px"><img src="/img/asf_logo.svg" alt="Apache logo" class="themedImage_ToTc themedImage--dark_i4oU footer__logo" height="128px"></a></div><div class="footer__copyright"><div style="text-align: left;"> <div style="border-top: 1px solid #ccc;min-height: 60px;line-height: 20px;text-align: center;font-family: Avenir-Medium,serif;font-size: 14px;color: #999;display: flex;align-items: center;"><span>Copyright © 2025 The Apache Software Foundation. Apache Kvrocks, Kvrocks, and its feather logo are trademarks of The Apache Software Foundation. Redis and its cube logo are registered trademarks of Redis Ltd.</span></div> </div></div></div></div></footer></div> <script src="/assets/js/runtime~main.4a3abd4f.js"></script> <script src="/assets/js/main.da7164cf.js"></script> </body> </html>