---
title: Performance is key. Consistency is a must.
---
<!-- Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License. -->

<section class="bf-masthead" id="content" role="main">
    <div class="bf-masthead-bg">
        <div class="container">
            <img class="logo-title img-responsive hidden-xs" src="img/Apache_Geode_logo.png" />
            <div class="text-container">
                <h2 class="tagline"><em>Performance</em> is key. <em>Consistency</em> is a must.</h2>
                <p class="description">Providing low latency, high concurrency data management solutions since 2002.<br/>
                  <br/>Build high-speed, data-intensive applications that elastically meet performance requirements at any scale.<br/>
                  Take advantage of Apache Geode's unique technology that blends advanced techniques for data replication, partitioning and distributed processing.

                  <br/><br/>
                  Apache Geode provides a database-like consistency model, reliable transaction processing and a shared-nothing architecture to maintain very low latency performance with high concurrency processing.<br/>
            </div>

            <div class="btn-wrapper">
              <p><a href="/releases/" class="btn btn-inverse btn-lg">Download Geode</a> &nbsp;</p> 
              <!-- Place this tag where you want the button to render. -->
              <a class="github-button" href="https://github.com/apache/geode" data-icon="octicon-star" data-style="mega" data-count-href="/apache/geode/stargazers" data-count-api="/repos/apache/geode#stargazers_count" data-count-aria-label="# stargazers on GitHub" aria-label="Star apache/geode on GitHub">Star</a>
              <a class="github-button" href="https://github.com/apache/geode/fork" data-icon="octicon-repo-forked" data-style="mega" data-count-href="/apache/geode/network" data-count-api="/repos/apache/geode#forks_count" data-count-aria-label="# forks on GitHub" aria-label="Fork apache/geode on GitHub">Fork</a>
              <a class="github-button" href="https://github.com/apache/geode" data-icon="octicon-eye" data-style="mega" data-count-href="/apache/geode/watchers" data-count-api="/repos/apache/geode#subscribers_count" data-count-aria-label="# watchers on GitHub" aria-label="Watch apache/geode on GitHub">Watch</a>


            </div>
        </div>
    </div>
</section>

<section class="bf-features">
    <div class="container">
        <div class="row">
            <div class="col-md-4">
                <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="fa fa-sitemap"></i></div>
                <h3>Replication and Partitioning</h3>
                <p>Data can easily be partitioned (sharded) or replicated between nodes allowing performance to scale as needed. Durability is ensured through redundant in-memory copies and disk-based persistence.</p>
            </div>
            <div class="col-md-4">
                <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="fa fa-hdd-o"></i></div>
                <h3>Persistence</h3>
                <p>Super fast write-ahead-logging (WAL) persistence with a shared-nothing architecture that is optimized for fast parallel recovery of nodes or an entire cluster.</p>
            </div>
            <div class="col-md-4">
                <div class="bf-icon-wrap"><i aria-hidden="true" class="fa fa-rocket"></i></div>
                <h3>Performance</h3>
                <p>Linear-scaling low latency for transactions, reads, writes and query processing of indexed or unindexed data.</p>
            </div>
        </div>
        <div class="row">
            <div class="col-md-4">
                <div class="bf-icon-wrap" style="font-size:40px; vertical-align: 15px;"><i aria-hidden="true" class="fa fa-fast-forward"></i><i aria-hidden="true" class="fa fa-dashboard"></i></div>
                <h3>In-Memory Storage</h3>
                <p>Blazing fast in-memory storage optimized for large heaps, with the option of using off-heap storage, compression and features such as disk-overflow, eviction and expiration of data.</p>
            </div>
            <div class="col-md-4">
                <div class="bf-icon-wrap"><span style="font-size:60px" aria-hidden="true" class="fa fa-cogs"></span></div>
                <h3>Functions</h3>
                <p>Distributed location-aware user functions can be deployed and executed by the same nodes storing relevant sharded data for fast parallel processing. Failed operations can be retried on replicant nodes.</p>
            </div>
            <div class="col-md-4">
                <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="fa fa-credit-card"></i></div>
                <h3>Transactions</h3>
                <p>ACID distributed transactions support efficient and safe coordinated operations on colocated data. Transactions can be initiated or suspended by either a client or a server.</p>
            </div>
        </div>
        <div class="row">
          <div class="col-md-4">
              <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="fa fa-table"></i></div>
              <h3>OQL and Indexes</h3>
              <p>Object Query Language allows distributed query execution on hot and cold data, with SQL-like capabilities, including joins.<br/>
              Multiple kinds of indexes can be defined and consistently maintained across the cluster.</p>
          </div>
          <div class="col-md-4">
              <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="fa fa-bolt"></i></div>
              <h3>Events</h3>
              <p>Clients can be notified about server-side data events, and servers can react synchronously or asynchronously with guaranteed delivery of ordered events.</p>
          </div>
          <div class="col-md-4">
              <div class="bf-icon-wrap"><i style="font-size:65px; vertical-align: -5px;" aria-hidden="true" class="fa fa-cloud"></i></div>
              <h3>Clustering</h3>
              <p>Highly scalable, robust advanced clustering technology with failure detection, dynamic scaling, and network-partition detection algorithms.</p>
          </div>
        </div>
        <div class="row">
          <div class="col-md-4">
              <div class="bf-icon-wrap" style="font-size:30px; vertical-align: 15px;" aria-hidden="true"><i class="fa fa-cloud"></i><i style="font-size:15px; vertical-align: 15px;" class="fa fa-exchange fa-8x"></i><i class="fa fa-cloud"></i></div>
              <h3>Multi-Cluster</h3>
              <p>Geode clusters can be replicated over WAN in various topologies: active-active, active-passive, ring, hub-spoke, star, etc.</p>
          </div>
          <div class="col-md-4">
              <div class="bf-icon-wrap" style="font-size:30px; vertical-align: -5px;" aria-hidden="true"><i class="fa fa-bullhorn"></i><i class="fa fa-laptop"></i></div>
              <h3>Continuous Query</h3>
              <p>Clients can stay up to date by registering OQL queries with the Geode servers, making event-driven applications possible.</p>
          </div>
          <div class="col-md-4">
              <div class="bf-icon-wrap" style="font-size:30px; vertical-align: -5px;" aria-hidden="true"><i class="fa fa-desktop"></i><i class="fa fa-laptop"></i></div>
              <h3>Clients</h3>
              <p>Clients are available for Java, C++, and C# .NET. A REST API is available for all other languages.</p>
          </div>
        </div>
      <div class="row">
          <div class="col-md-4">
              <div></div>
          </div>
          <div class="col-md-4">
              <div class="bf-icon-wrap" style="font-size:65px; vertical-align: -5px;" aria-hidden="true"><i class="fa fa-plug"></i></div>
              <h3>Adapters</h3>
              <p>Geode can be used as a drop-in replacement for Redis and memcached, allowing users of these caches to use Geode's server-side features like multi-cluster replication.</p>
          </div>
          <div class="col-md-4">
              <div></div>
          </div>
        </div>

    </div>

    </div>
</section>

<section class="bf-questions">
    <div class="container">
            <div class="col-md-12 text-center cta">
                And much more... Interested? You can check our <a href="https://cwiki.apache.org/confluence/display/GEODE/Index#Index-Geodein5minutesGeodein5minutes" target="_blank" class="btn btn-inverse btn-lg">Geode in 5 minutes tutorial</a> <span class="avoidwrap">, ask a question on the <a href="/community/" class="btn btn-inverse btn-lg">Mailing lists</a> or <a href="http://stackoverflow.com/search?q=Apache%20Geode" class="btn btn-inverse btn-lg">StackOverflow</a></span>
            </div>
    </div>
</section

<section class="bf-news">
    <div class="container">

        <div class="row">
            <div class="col-md-12 text-left">
                <h2>About the Project</h2>
<p>Apache Geode is a data management platform that provides real-time, consistent access to data-intensive applications throughout widely distributed cloud architectures.</p>

<p>Geode pools memory, CPU, network resources, and optionally local disk across multiple processes
to manage application objects and behavior. It uses dynamic replication and data partitioning
techniques to implement high availability, improved performance, scalability, and fault
tolerance. In addition to being a distributed data container, Apache Geode is an in-memory data
management system that provides reliable asynchronous event notifications and guaranteed message
delivery.</p>

<p>Apache Geode is a mature, robust technology originally developed by GemStone Systems.
Commercially available as GemFire™, it was first deployed in the financial sector as the transactional, low-latency data engine used
in Wall Street trading platforms.
Today Apache Geode technology is used by hundreds of enterprise customers for high-scale business applications that must meet low latency and 24x7 availability requirements.</p>
            </div>
            <!--
            <div class="col-md-4 text-left">
                <h2>Recent Releases</h2>


            </div>
            -->
        </div>

    </div>
</section>
