<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<link rel="canonical" href="https://ignite.apache.org/releases/2.9.1/javadoc/org/apache/ignite/cache/package-frame.html" />
<META NAME="ROBOTS" CONTENT="NOINDEX">
<!-- Yandex.Metrika counter -->
    <script type="text/javascript" >
      (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
      m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
      (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
    
      ym(72949126, "init", {
           clickmap:true,
           trackLinks:true,
           accurateTrackBounce:true,
           webvisor:true
      });
    </script>
    <noscript><div><img src="https://mc.yandex.ru/watch/72949126" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
    <!-- /Yandex.Metrika counter -->
<script type='text/javascript'>
    window.__lo_site_id = 284467;
    
      (function() {
        var wa = document.createElement('script'); wa.type = 'text/javascript'; wa.async = true;
        wa.src = 'https://d10lpsik1i8c69.cloudfront.net/w.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(wa, s);
        })();
      </script>


<!-- Generated by javadoc (1.8.0_261) on Wed Dec 09 14:33:12 MSK 2020 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>org.apache.ignite.cache (Ignite 2.9.1)</title>
<meta name="date" content="2020-12-09">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<link rel='shortcut icon' href='https://ignite.apache.org/favicon.ico'/>

<script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-61232409-1', 'auto');
  ga('send', 'pageview');

</script></head>

<body>
<h1 class="bar"><a href="../../../../org/apache/ignite/cache/package-summary.html" target="classFrame">org.apache.ignite.cache</a></h1>
<div class="indexContainer">
<h2 title="Interfaces">Interfaces</h2>
<ul title="Interfaces">
<li><a href="CacheEntry.html" title="interface in org.apache.ignite.cache" target="classFrame"><span class="interfaceName">CacheEntry</span></a></li>
<li><a href="CacheEntryEventSerializableFilter.html" title="interface in org.apache.ignite.cache" target="classFrame"><span class="interfaceName">CacheEntryEventSerializableFilter</span></a></li>
<li><a href="CacheEntryProcessor.html" title="interface in org.apache.ignite.cache" target="classFrame"><span class="interfaceName">CacheEntryProcessor</span></a></li>
<li><a href="CacheInterceptor.html" title="interface in org.apache.ignite.cache" target="classFrame"><span class="interfaceName">CacheInterceptor</span></a></li>
<li><a href="CacheMetrics.html" title="interface in org.apache.ignite.cache" target="classFrame"><span class="interfaceName">CacheMetrics</span></a></li>
</ul>
<h2 title="Classes">Classes</h2>
<ul title="Classes">
<li><a href="CacheInterceptorAdapter.html" title="class in org.apache.ignite.cache" target="classFrame">CacheInterceptorAdapter</a></li>
<li><a href="CacheInterceptorEntry.html" title="class in org.apache.ignite.cache" target="classFrame">CacheInterceptorEntry</a></li>
<li><a href="CacheKeyConfiguration.html" title="class in org.apache.ignite.cache" target="classFrame">CacheKeyConfiguration</a></li>
<li><a href="CacheManager.html" title="class in org.apache.ignite.cache" target="classFrame">CacheManager</a></li>
<li><a href="CachingProvider.html" title="class in org.apache.ignite.cache" target="classFrame">CachingProvider</a></li>
<li><a href="QueryEntity.html" title="class in org.apache.ignite.cache" target="classFrame">QueryEntity</a></li>
<li><a href="QueryEntityPatch.html" title="class in org.apache.ignite.cache" target="classFrame">QueryEntityPatch</a></li>
<li><a href="QueryIndex.html" title="class in org.apache.ignite.cache" target="classFrame">QueryIndex</a></li>
</ul>
<h2 title="Enums">Enums</h2>
<ul title="Enums">
<li><a href="CacheAtomicityMode.html" title="enum in org.apache.ignite.cache" target="classFrame">CacheAtomicityMode</a></li>
<li><a href="CacheMode.html" title="enum in org.apache.ignite.cache" target="classFrame">CacheMode</a></li>
<li><a href="CachePeekMode.html" title="enum in org.apache.ignite.cache" target="classFrame">CachePeekMode</a></li>
<li><a href="CacheRebalanceMode.html" title="enum in org.apache.ignite.cache" target="classFrame">CacheRebalanceMode</a></li>
<li><a href="CacheWriteSynchronizationMode.html" title="enum in org.apache.ignite.cache" target="classFrame">CacheWriteSynchronizationMode</a></li>
<li><a href="PartitionLossPolicy.html" title="enum in org.apache.ignite.cache" target="classFrame">PartitionLossPolicy</a></li>
<li><a href="QueryIndexType.html" title="enum in org.apache.ignite.cache" target="classFrame">QueryIndexType</a></li>
</ul>
<h2 title="Exceptions">Exceptions</h2>
<ul title="Exceptions">
<li><a href="CacheExistsException.html" title="class in org.apache.ignite.cache" target="classFrame">CacheExistsException</a></li>
<li><a href="CachePartialUpdateException.html" title="class in org.apache.ignite.cache" target="classFrame">CachePartialUpdateException</a></li>
<li><a href="CacheServerNotFoundException.html" title="class in org.apache.ignite.cache" target="classFrame">CacheServerNotFoundException</a></li>
</ul>
</div>
</body>
</html>
