| <!DOCTYPE html> |
| |
| |
| |
| <html lang="en"> |
| <head> |
| <!-- Global site tag (gtag.js) - Google Analytics --> |
| <script async src="https://www.googletagmanager.com/gtag/js?id=UA-61232409-1"></script> |
| <script> |
| window.dataLayer = window.dataLayer || []; |
| function gtag(){dataLayer.push(arguments);} |
| gtag('js', new Date()); |
| |
| gtag('config', 'UA-61232409-1'); |
| </script> |
| |
| |
| |
| <meta charset="UTF-8"> |
| <meta name="ignite-version" content="2.9.1" /> |
| <title>Basic Cache Operations | Ignite Documentation</title> |
| |
| <link rel="canonical" href="/docs/latest/key-value-api/basic-cache-operations" /> |
| |
| |
| <link rel="stylesheet" href="/assets/css/styles.css?1609305749"> |
| <link rel="stylesheet" href="/assets/css/asciidoc-pygments.css"> |
| <link rel="shortcut icon" href="/favicon.ico"> |
| <meta name='viewport' content='width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0'> |
| |
| <script type="text/javascript" src="/assets/js/anchor.min.js?1609305749"></script> |
| |
| <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" /> |
| |
| |
| </head> |
| <body> |
| <header> |
| <!--#include virtual="/includes/promotion_banner.html" --> |
| <div class="container"> |
| <button type='button' class='menu' title='Docs menu'> |
| <img src="/assets/images/menu-icon.svg"/> |
| </button> |
| <div class='home'> |
| <a href="/" class='home' title='Apache Ignite home'> |
| <img src="/assets/images/apache_ignite_logo.svg" alt="Apache Ignite logo" width="103" > |
| </a> |
| </div> |
| |
| |
| <select id="version-selector"> |
| <option value="2.9.1">2.9.1</option> |
| </select> |
| |
| <nav id="api-docs"> |
| <li><a href="#">APIs</a> |
| |
| <nav class='dropdown'> |
| <li class="dropdown-item"><a href="/releases/latest/javadoc/index.html">Java</a></li> |
| |
| <li class="dropdown-item"><a href="/releases/latest/dotnetdoc/api/">C#/.NET</a></li> |
| |
| <li class="dropdown-item"><a href="/releases/latest/cppdoc/index.html">C++</a></li> |
| |
| <li class="dropdown-item"><a href="/releases/latest/scaladoc/scalar/index.html#org.apache.ignite.scalar.scalar$">Scala</a></li> |
| |
| </nav> |
| </li> |
| |
| <li><a href="#">Examples</a> |
| <nav class="dropdown"> |
| <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/examples" target="_blank" rel="noopener" title="Apache Ignite Java examples">Java</a></li> |
| |
| <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/dotnet/examples" target="_blank" rel="noopener" title="Apache Ignite C#/.NET examples">C#/.NET</a></li> |
| |
| <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/cpp/examples" target="_blank" rel="noopener" title="Apache Ignite C++ examples">C++</a></li> |
| |
| <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/python/examples" target="_blank" rel="noopener" title="Apache Ignite Python examples">Python</a></li> |
| |
| <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/nodejs/examples" target="_blank" rel="noopener" title="Apache Ignite NodeJS examples">NodeJS</a></li> |
| |
| <li class="dropdown-item"><a href="https://github.com/apache/ignite/tree/master/modules/platforms/php/examples" target="_blank" rel="noopener" title="Apache Ignite PHP examples">PHP</a></li> |
| </nav> |
| </li> |
| </nav> |
| |
| <form class='search'> |
| <button class="search-close" type='button'><img src='/assets/images/cancel.svg'></button> |
| <input type="search" placeholder="Search…" id="search-input"> |
| </form> |
| <button type='button' class='search-toggle'><img src='/assets/images/search.svg'></button> |
| |
| <nav id="lang-selector"> |
| <li><a href="#"><img src="/assets/images/icon_lang_en.png" alt="English language icon" /><span>▼</span></a> |
| <nav class="dropdown"> |
| <li class="dropdown-item"><a href="/docs/latest/" ><img src="/assets/images/icon_lang_en.png" alt="English language icon" /><span>English</span></a></li> |
| <li class="dropdown-item"><a href="https://www.ignite-service.cn/doc/java/" target="_blank" rel="noopener"><img src="/assets/images/icon_lang_cn.png" alt="Chinese language icon" /><span>Chinese</span></a></li> |
| </nav> |
| </li> |
| </nav> |
| |
| <button type='button' class='top-nav-toggle'>⋮</button> |
| |
| |
| |
| </div> |
| </header> |
| |
| |
| <link rel="stylesheet" href="/assets/css/docs.css"> |
| <section class='page-docs'> |
| |
| |
| |
| |
| |
| |
| <nav class='left-nav' data-swiftype-index='false'> |
| |
| |
| <li> |
| |
| |
| <a href="/docs/latest/index" class='' >Documentation Overview</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Quick Start Guides<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/quick-start/java" |
| class='' |
| >Java</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/quick-start/dotnet" |
| class='' |
| >.NET/C#</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/quick-start/cpp" |
| class='' |
| >C++</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/quick-start/python" |
| class='' |
| >Python</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/quick-start/nodejs" |
| class='' |
| >Node.JS</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/quick-start/sql" |
| class='' |
| >SQL</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/quick-start/php" |
| class='' |
| >PHP</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/quick-start/restapi" |
| class='' |
| >REST API</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Installation<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/installation/installing-using-zip" |
| class='' |
| >Installing Using ZIP Archive</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/installation/installing-using-docker" |
| class='' |
| >Installing Using Docker</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/installation/deb-rpm" |
| class='' |
| >Installing DEB or RPM package</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Kubernetes<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/installation/kubernetes/amazon-eks-deployment" class=''>Amazon EKS</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/installation/kubernetes/azure-deployment" class=''>Azure Kubernetes Service</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/installation/kubernetes/gke-deployment" class=''>Google Kubernetes Engine</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/installation/vmware-installation" |
| class='' |
| >VMWare</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Setting Up<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/understanding-configuration" |
| class='' |
| >Understanding Configuration</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/setup" |
| class='' |
| >Setting Up</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/logging" |
| class='' |
| >Configuring Logging</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/resources-injection" |
| class='' |
| >Resources Injection</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/latest/starting-nodes" class='' >Starting and Stopping Nodes</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Clustering<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/clustering/clustering" |
| class='' |
| >Overview</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/clustering/tcp-ip-discovery" |
| class='' |
| >TCP/IP Discovery</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/clustering/zookeeper-discovery" |
| class='' |
| >ZooKeeper Discovery</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/clustering/discovery-in-the-cloud" |
| class='' |
| >Discovery in the Cloud</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/clustering/network-configuration" |
| class='' |
| >Network Configuration</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/clustering/connect-client-nodes" |
| class='' |
| >Connecting Client Nodes</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/clustering/baseline-topology" |
| class='' |
| >Baseline Topology</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/clustering/running-client-nodes-behind-nat" |
| class='' |
| >Running Client Nodes Behind NAT</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Thin Clients<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/thin-clients/getting-started-with-thin-clients" |
| class='' |
| >Thin Clients Overview</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/thin-clients/java-thin-client" |
| class='' |
| >Java Thin Client</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/thin-clients/dotnet-thin-client" |
| class='' |
| >.NET Thin Client</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/thin-clients/cpp-thin-client" |
| class='' |
| >C++ Thin Client</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/thin-clients/python-thin-client" |
| class='' |
| >Python Thin Client</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/thin-clients/php-thin-client" |
| class='' |
| >PHP Thin Client</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/thin-clients/nodejs-thin-client" |
| class='' |
| >Node.js Thin Client</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Binary Client Protocol<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/binary-client-protocol/binary-client-protocol" class=''>Binary Client Protocol</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/binary-client-protocol/data-format" class=''>Data Format</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/binary-client-protocol/key-value-queries" class=''>Key-Value Queries</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/binary-client-protocol/sql-and-scan-queries" class=''>SQL and Scan Queries</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/binary-client-protocol/binary-type-metadata" class=''>Binary Types Metadata</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/binary-client-protocol/cache-configuration" class=''>Cache Configuration</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Data Modeling<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/data-modeling/data-modeling" |
| class='' |
| >Introduction</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/data-modeling/data-partitioning" |
| class='' |
| >Data Partitioning</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/data-modeling/affinity-collocation" |
| class='' |
| >Affinity Colocation</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/data-modeling/binary-marshaller" |
| class='' |
| >Binary Marshaller</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Configuring Memory<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/memory-architecture" |
| class='' |
| >Memory Architecture</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/memory-configuration/data-regions" |
| class='' |
| >Configuring Data Regions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/memory-configuration/eviction-policies" |
| class='' |
| >Eviction Policies</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Configuring Persistence<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/persistence/native-persistence" |
| class='' |
| >Ignite Persistence</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/persistence/external-storage" |
| class='' |
| >External Storage</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/persistence/swap" |
| class='' |
| >Swapping</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/persistence/custom-cache-store" |
| class='' |
| >Implementing Custom Cache Store</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/persistence/snapshots" |
| class='' |
| >Cluster Snapshots</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/persistence/disk-compression" |
| class='' |
| >Disk Compression</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/persistence/persistence-tuning" |
| class='' |
| >Tuning Persistence</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Configuring Caches<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/configuring-caches/configuration-overview" |
| class='' |
| >Cache Configuration</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/configuring-caches/configuring-backups" |
| class='' |
| >Configuring Partition Backups</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/configuring-caches/partition-loss-policy" |
| class='' |
| >Partition Loss Policy</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/configuring-caches/atomicity-modes" |
| class='' |
| >Atomicity Modes</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/configuring-caches/expiry-policies" |
| class='' |
| >Expiry Policy</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/configuring-caches/on-heap-caching" |
| class='' |
| >On-Heap Caching</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/configuring-caches/cache-groups" |
| class='' |
| >Cache Groups</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/configuring-caches/near-cache" |
| class='' |
| >Near Caches</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/latest/data-rebalancing" class='' >Data Rebalancing</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/latest/data-streaming" class='' >Data Streaming</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle expanded '>Using Key-Value API<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group expanded'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/key-value-api/basic-cache-operations" |
| class='active' |
| >Basic Cache Operations</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/key-value-api/binary-objects" |
| class='' |
| >Working with Binary Objects</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/key-value-api/using-scan-queries" |
| class='' |
| >Using Scan Queries</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/read-repair" |
| class='' |
| >Read Repair</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/latest/key-value-api/transactions" class='' >Performing Transactions</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Working with SQL<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/SQL/sql-introduction" |
| class='' |
| >Introduction</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/SQL/schemas" |
| class='' |
| >Understanding Schemas</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/SQL/indexes" |
| class='' |
| >Defining Indexes</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/SQL/sql-api" |
| class='' |
| >Using SQL API</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/SQL/distributed-joins" |
| class='' |
| >Distributed Joins</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/SQL/sql-transactions" |
| class='' |
| >SQL Transactions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/SQL/custom-sql-func" |
| class='' |
| >Custom SQL Functions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/SQL/JDBC/jdbc-driver" |
| class='' |
| >JDBC Driver</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/SQL/JDBC/jdbc-client-driver" |
| class='' |
| >JDBC Client Driver</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>ODBC Driver<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/SQL/ODBC/odbc-driver" class=''>ODBC Driver</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest//SQL/ODBC/connection-string-dsn" class=''>Connection String and DSN</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/SQL/ODBC/querying-modifying-data" class=''>Querying and Modifying Data</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/SQL/ODBC/specification" class=''>Specification</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/SQL/ODBC/data-types" class=''>Data Types</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/SQL/ODBC/error-codes" class=''>Error Codes</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/transactions/mvcc" |
| class='' |
| >Multiversion Concurrency Control</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>SQL Reference<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/sql-reference/sql-conformance" |
| class='' |
| >SQL Conformance</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/sql-reference/ddl" |
| class='' |
| >Data Definition Language (DDL)</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/sql-reference/dml" |
| class='' |
| >Data Manipulation Language (DML)</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/sql-reference/transactions" |
| class='' |
| >Transactions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/sql-reference/operational-commands" |
| class='' |
| >Operational Commands</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/sql-reference/aggregate-functions" |
| class='' |
| >Aggregate functions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/sql-reference/numeric-functions" |
| class='' |
| >Numeric Functions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/sql-reference/string-functions" |
| class='' |
| >String Functions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/sql-reference/date-time-functions" |
| class='' |
| >Data and Time Functions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/sql-reference/system-functions" |
| class='' |
| >System Functions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/sql-reference/data-types" |
| class='' |
| >Data Types</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Distributed Computing<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/distributed-computing/distributed-computing" |
| class='' |
| >Distributed Computing API</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/distributed-computing/cluster-groups" |
| class='' |
| >Cluster Groups</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/distributed-computing/executor-service" |
| class='' |
| >Executor Service</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/distributed-computing/map-reduce" |
| class='' |
| >MapReduce API</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/distributed-computing/load-balancing" |
| class='' |
| >Load Balancing</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/distributed-computing/fault-tolerance" |
| class='' |
| >Fault Tolerance</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/distributed-computing/job-scheduling" |
| class='' |
| >Job Scheduling</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/distributed-computing/collocated-computations" |
| class='' |
| >Colocating Computations with Data</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Code Deployment<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/code-deployment/deploying-user-code" |
| class='' |
| >Deploying User Code</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/code-deployment/peer-class-loading" |
| class='' |
| >Peer Class Loading</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Machine Learning<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/machine-learning/machine-learning" |
| class='' |
| >Machine Learning</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/machine-learning/partition-based-dataset" |
| class='' |
| >Partition Based Dataset</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/machine-learning/updating-trained-models" |
| class='' |
| >Updating Trained Models</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Binary Classification<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/binary-classification/introduction" class=''>Introduction</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/binary-classification/linear-svm" class=''>Linear SVM (Support Vector Machine)</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/binary-classification/decision-trees" class=''>Decision Trees</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/binary-classification/multilayer-perceptron" class=''>Multilayer Perceptron</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/binary-classification/logistic-regression" class=''>Logistic Regression</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/binary-classification/knn-classification" class=''>k-NN Classification</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/binary-classification/ann" class=''>ANN (Approximate Nearest Neighbor)</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/binary-classification/naive-bayes" class=''>Naive Bayes</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Regression<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/regression/introduction" class=''>Introduction</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/regression/linear-regression" class=''>Linear Regression</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/regression/decision-trees-regression" class=''>Decision Trees Regression</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/regression/knn-regression" class=''>k-NN Regression</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Clustering<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/clustering/introduction" class=''>Introduction</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/clustering/k-means-clustering" class=''>K-Means Clustering</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/clustering/gaussian-mixture" class=''>Gaussian mixture (GMM)</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/machine-learning/preprocessing" |
| class='' |
| >Preprocessing</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Model Selection<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/model-selection/introduction" class=''>Introduction</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/model-selection/evaluator" class=''>Evaluator</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/model-selection/split-the-dataset-on-test-and-train-datasets" class=''>Split the dataset on test and train datasets</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/model-selection/hyper-parameter-tuning" class=''>Hyper-parameter tuning</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/model-selection/pipeline-api" class=''>Pipeline API</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/machine-learning/multiclass-classification" |
| class='' |
| >Multiclass Classification</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Ensemble Methods<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/ensemble-methods/introduction" class=''></a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/ensemble-methods/stacking" class=''>Stacking</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/ensemble-methods/baggin" class=''>Bagging</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/ensemble-methods/random-forest" class=''>Random Forest</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/ensemble-methods/gradient-boosting" class=''>Gradient Boosting</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/machine-learning/recommendation-systems" |
| class='' |
| >Recommendation Systems</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Importing Model<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/importing-model/introduction" class=''>Introduction</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/importing-model/model-import-from-gxboost" class=''>Import Model from XGBoost</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/machine-learning/importing-model/model-import-from-apache-spark" class=''>Import Model from Apache Spark</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/latest/key-value-api/continuous-queries" class='' >Using Continuous Queries</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/latest/services/services" class='' >Using Ignite Services</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/latest/messaging" class='' >Using Ignite Messaging</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Distributed Data Structures<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/data-structures/queue-and-set" |
| class='' |
| >Queue and Set</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/data-structures/atomic-types" |
| class='' |
| >Atomic Types</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/data-structures/countdownlatch" |
| class='' |
| >CountDownLatch</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/data-structures/atomic-sequence" |
| class='' |
| >Atomic Sequence</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/data-structures/semaphore" |
| class='' |
| >Semaphore</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/data-structures/id-generator" |
| class='' |
| >ID Generator</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/latest/distributed-locks" class='' >Distributed Locks</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/latest/restapi" class='' >REST API</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>.NET Specific<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/net-specific/net-configuration-options" |
| class='' |
| >Configuration Options</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/net-specific/net-deployment-options" |
| class='' |
| >Deployment Options</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/net-specific/net-standalone-nodes" |
| class='' |
| >Standalone Nodes</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/net-specific/net-logging" |
| class='' |
| >Logging</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/net-specific/net-linq" |
| class='' |
| >LINQ</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/net-specific/net-java-services-execution" |
| class='' |
| >Java Services Execution</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/net-specific/net-platform-cache" |
| class='' |
| >.NET Platform Cache</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/net-specific/net-plugins" |
| class='' |
| >Plugins</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/net-specific/net-serialization" |
| class='' |
| >Serialization</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/net-specific/net-cross-platform-support" |
| class='' |
| >Cross-Platform Support</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/net-specific/net-platform-interoperability" |
| class='' |
| >Platform Interoperability</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/net-specific/net-remote-assembly-loading" |
| class='' |
| >Remote Assembly Loading</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/net-specific/net-troubleshooting" |
| class='' |
| >Troubleshooting</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Integrations<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/net-specific/asp-net-output-caching" class=''>ASP.NET Output Caching</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/net-specific/asp-net-session-state-caching" class=''>ASP.NET Session State Caching</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/net-specific/net-entity-framework-cache" class=''>Entity Framework 2nd Level Cache</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>C++ Specific<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/cpp-specific/cpp-serialization" |
| class='' |
| >Serialization</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/cpp-specific/cpp-platform-interoperability" |
| class='' |
| >Platform Interoperability</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/cpp-specific/cpp-objects-lifetime" |
| class='' |
| >Objects Lifetime</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Monitoring<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/monitoring-metrics/intro" |
| class='' |
| >Introduction</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/monitoring-metrics/cluster-id" |
| class='' |
| >Cluster ID and Tag</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/monitoring-metrics/cluster-states" |
| class='' |
| >Cluster States</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Metrics<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/monitoring-metrics/configuring-metrics" class=''>Configuring Metrics</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/monitoring-metrics/metrics" class=''>JMX Metrics</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>New Metrics System<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/monitoring-metrics/new-metrics-system" class=''>Introduction</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/monitoring-metrics/new-metrics" class=''>Metrics</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/monitoring-metrics/system-views" |
| class='' |
| >System Views</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/monitoring-metrics/tracing" |
| class='' |
| >Tracing</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Working with Events<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/events/listening-to-events" |
| class='' |
| >Enabling and Listenting to Events</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/events/events" |
| class='' |
| >Events</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Tools<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/tools/control-script" |
| class='' |
| >Control Script</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/tools/visor-cmd" |
| class='' |
| >Visor CMD</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/tools/gg-control-center" |
| class='' |
| >GridGain Control Center</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/tools/sqlline" |
| class='' |
| >SQLLine</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/tools/tableau" |
| class='' |
| >Tableau</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/tools/informatica" |
| class='' |
| >Informatica</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/tools/pentaho" |
| class='' |
| >Pentaho</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Security<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/security/authentication" |
| class='' |
| >Authentication</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/security/ssl-tls" |
| class='' |
| >SSL/TLS</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Transparent Data Encryption<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/security/tde" class=''>Introduction</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/security/master-key-rotation" class=''>Master key rotation</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/security/sandbox" |
| class='' |
| >Sandbox</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Extensions and Integrations<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Spring<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/spring/spring-boot" class=''>Spring Boot</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/spring/spring-data" class=''>Spring Data</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/spring/spring-caching" class=''>Spring Caching</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Ignite for Spark<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/overview" class=''>Overview</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/ignitecontext-and-rdd" class=''>IgniteContext and IgniteRDD</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/ignite-dataframe" class=''>Ignite DataFrame</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/installation" class=''>Installation</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/spark-shell" class=''>Test Ignite with Spark-shell</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/ignite-for-spark/troubleshooting" class=''>Troubleshooting</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/extensions-and-integrations/hibernate-l2-cache" |
| class='' |
| >Hibernate L2 Cache</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/extensions-and-integrations/mybatis-l2-cache" |
| class='' |
| >MyBatis L2 Cache</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Streaming<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/streaming/kafka-streamer" class=''>Kafka Streamer</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/streaming/camel-streamer" class=''>Camel Streamer</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/streaming/flink-streamer" class=''>Flink Streamer</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/streaming/flume-sink" class=''>Flume Sink</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/streaming/jms-streamer" class=''>JMS Streamer</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/streaming/mqtt-streamer" class=''>MQTT Streamer</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/streaming/rocketmq-streamer" class=''>RocketMQ Streamer</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/streaming/storm-streamer" class=''>Storm Streamer</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/streaming/zeromq-streamer" class=''>ZeroMQ Streamer</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/streaming/twitter-streamer" class=''>Twitter Streamer</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| |
| |
| <button |
| type='button' |
| class='collapsed '>Cassandra Integration<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class="sub_pages collapsed"> |
| |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/cassandra/overview" class=''>Overview</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/cassandra/configuration" class=''>Configuration</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/cassandra/usage-examples" class=''>Usage Examples</a></li> |
| |
| |
| |
| |
| <li><a href="/docs/latest/extensions-and-integrations/cassandra/ddl-generator" class=''>DDL Generator</a></li> |
| |
| </nav> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/extensions-and-integrations/php-pdo" |
| class='' |
| >PHP PDO</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| <li> |
| |
| |
| <a href="/docs/latest/plugins" class='' >Plugins</a> |
| |
| </li> |
| |
| <li> |
| |
| |
| |
| |
| |
| |
| <button type='button' class='group-toggle collapsed '>Performance and Troubleshooting<img class="state-indicator" src="/assets/images/left-nav-arrow.svg"></button> |
| <nav class='nav-group collapsed'> |
| |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/perf-and-troubleshooting/general-perf-tips" |
| class='' |
| >General Performance Tips</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/perf-and-troubleshooting/memory-tuning" |
| class='' |
| >Memory and JVM Tuning</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/perf-and-troubleshooting/persistence-tuning" |
| class='' |
| >Persistence Tuning</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/perf-and-troubleshooting/sql-tuning" |
| class='' |
| >SQL Tuning</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/perf-and-troubleshooting/thread-pools-tuning" |
| class='' |
| >Thread Pools Tuning</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/perf-and-troubleshooting/troubleshooting" |
| class='' |
| >Troubleshooting and Debugging</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/perf-and-troubleshooting/handling-exceptions" |
| class='' |
| >Handling Exceptions</a> |
| |
| </li> |
| |
| |
| |
| |
| |
| |
| <li> |
| |
| <a href="/docs/latest/perf-and-troubleshooting/yardstick-benchmarking" |
| class='' |
| >Benchmarking With Yardstick</a> |
| |
| </li> |
| |
| |
| |
| </nav> |
| |
| </li> |
| |
| </nav> |
| <div class="left-nav__overlay"></div> |
| |
| |
| <article data-swiftype-index='true'> |
| <a class='edit-link' href="https://github.com/apache/ignite/tree/IGNITE-7595/docs/_docs/key-value-api/basic-cache-operations.adoc" target="_blank">Edit</a> |
| |
| <h1>Basic Cache Operations</h1> |
| |
| <div class="sect1"> |
| <h2 id="getting-an-instance-of-a-cache">Getting an Instance of a Cache</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>All operations on a cache are performed through an instance of <code>IgniteCache</code>. |
| You can obtain <code>IgniteCache</code> for an existing cache, or you can create a cache dynamically.</p> |
| </div> |
| <code-tabs><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="nc">Ignite</span> <span class="n">ignite</span> <span class="o">=</span> <span class="nc">Ignition</span><span class="o">.</span><span class="na">ignite</span><span class="o">();</span> |
| |
| <span class="c1">// Obtain an instance of the cache named "myCache".</span> |
| <span class="c1">// Note that different caches may have different generics.</span> |
| <span class="nc">IgniteCache</span><span class="o"><</span><span class="nc">Integer</span><span class="o">,</span> <span class="nc">String</span><span class="o">></span> <span class="n">cache</span> <span class="o">=</span> <span class="n">ignite</span><span class="o">.</span><span class="na">cache</span><span class="o">(</span><span class="s">"myCache"</span><span class="o">);</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C#/.NET'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="csharp"><span class="n">IIgnite</span> <span class="n">ignite</span> <span class="p">=</span> <span class="n">Ignition</span><span class="p">.</span><span class="nf">Start</span><span class="p">();</span> |
| |
| <span class="c1">// Obtain an instance of cache named "myCache".</span> |
| <span class="c1">// Note that generic arguments are only for your convenience.</span> |
| <span class="c1">// You can work with any cache in terms of any generic arguments.</span> |
| <span class="c1">// However, attempt to retrieve an entry of incompatible type</span> |
| <span class="c1">// will result in exception.</span> |
| <span class="n">ICache</span><span class="p"><</span><span class="kt">int</span><span class="p">,</span> <span class="kt">string</span><span class="p">></span> <span class="n">cache</span> <span class="p">=</span> <span class="n">ignite</span><span class="p">.</span><span class="n">GetCache</span><span class="p"><</span><span class="kt">int</span><span class="p">,</span> <span class="kt">string</span><span class="p">>(</span><span class="s">"myCache"</span><span class="p">);</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C++'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="cpp"><span class="n">IgniteConfiguration</span> <span class="n">cfg</span><span class="p">;</span> |
| <span class="n">cfg</span><span class="p">.</span><span class="n">springCfgPath</span> <span class="o">=</span> <span class="s">"/path/to/configuration.xml"</span><span class="p">;</span> |
| |
| <span class="n">Ignite</span> <span class="n">ignite</span> <span class="o">=</span> <span class="n">Ignition</span><span class="o">::</span><span class="n">Start</span><span class="p">(</span><span class="n">cfg</span><span class="p">);</span> |
| |
| <span class="c1">// Obtain instance of cache named "myCache".</span> |
| <span class="c1">// Note that different caches may have different generics.</span> |
| <span class="n">Cache</span><span class="o"><</span><span class="kt">int32_t</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span> <span class="n">cache</span> <span class="o">=</span> <span class="n">ignite</span><span class="p">.</span><span class="n">GetCache</span><span class="o"><</span><span class="kt">int32_t</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span><span class="p">(</span><span class="s">"myCache"</span><span class="p">);</span></code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="creating-caches-dynamically">Creating Caches Dynamically</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>You can also create a cache dynamically:</p> |
| </div> |
| <code-tabs><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="nc">Ignite</span> <span class="n">ignite</span> <span class="o">=</span> <span class="nc">Ignition</span><span class="o">.</span><span class="na">ignite</span><span class="o">();</span> |
| |
| <span class="nc">CacheConfiguration</span><span class="o"><</span><span class="nc">Integer</span><span class="o">,</span> <span class="nc">String</span><span class="o">></span> <span class="n">cfg</span> <span class="o">=</span> <span class="k">new</span> <span class="nc">CacheConfiguration</span><span class="o"><>();</span> |
| |
| <span class="n">cfg</span><span class="o">.</span><span class="na">setName</span><span class="o">(</span><span class="s">"myNewCache"</span><span class="o">);</span> |
| <span class="n">cfg</span><span class="o">.</span><span class="na">setAtomicityMode</span><span class="o">(</span><span class="nc">CacheAtomicityMode</span><span class="o">.</span><span class="na">TRANSACTIONAL</span><span class="o">);</span> |
| |
| <span class="c1">// Create a cache with the given name if it does not exist.</span> |
| <span class="nc">IgniteCache</span><span class="o"><</span><span class="nc">Integer</span><span class="o">,</span> <span class="nc">String</span><span class="o">></span> <span class="n">cache</span> <span class="o">=</span> <span class="n">ignite</span><span class="o">.</span><span class="na">getOrCreateCache</span><span class="o">(</span><span class="n">cfg</span><span class="o">);</span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>Refer to the <a href="/docs/latest/configuring-caches/configuration-overview">Cache Configuration</a> section for the list of cache parameters.</p> |
| </div></code-tab><code-tab data-tab='C#/.NET'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="csharp"><span class="n">IIgnite</span> <span class="n">ignite</span> <span class="p">=</span> <span class="n">Ignition</span><span class="p">.</span><span class="nf">Start</span><span class="p">();</span> |
| |
| <span class="c1">// Create cache with given name, if it does not exist.</span> |
| <span class="kt">var</span> <span class="n">cache</span> <span class="p">=</span> <span class="n">ignite</span><span class="p">.</span><span class="n">GetOrCreateCache</span><span class="p"><</span><span class="kt">int</span><span class="p">,</span> <span class="kt">string</span><span class="p">>(</span><span class="s">"myNewCache"</span><span class="p">);</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C++'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="cpp"><span class="n">IgniteConfiguration</span> <span class="n">cfg</span><span class="p">;</span> |
| <span class="n">cfg</span><span class="p">.</span><span class="n">springCfgPath</span> <span class="o">=</span> <span class="s">"/path/to/configuration.xml"</span><span class="p">;</span> |
| |
| <span class="n">Ignite</span> <span class="n">ignite</span> <span class="o">=</span> <span class="n">Ignition</span><span class="o">::</span><span class="n">Start</span><span class="p">(</span><span class="n">cfg</span><span class="p">);</span> |
| |
| <span class="c1">// Create a cache with the given name, if it does not exist.</span> |
| <span class="n">Cache</span><span class="o"><</span><span class="kt">int32_t</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span> <span class="n">cache</span> <span class="o">=</span> <span class="n">ignite</span><span class="p">.</span><span class="n">GetOrCreateCache</span><span class="o"><</span><span class="kt">int32_t</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span><span class="p">(</span><span class="s">"myNewCache"</span><span class="p">);</span></code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| <div class="paragraph"> |
| <p>The methods that create a cache throw an <code>org.apache.ignite.IgniteCheckedException</code> exception when called while the baseline topology is being changed.</p> |
| </div> |
| <div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="shell">javax.cache.CacheException: class org.apache.ignite.IgniteCheckedException: Failed to start/stop cache, cluster state change is <span class="k">in </span>progress. |
| at org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException<span class="o">(</span>GridCacheUtils.java:1323<span class="o">)</span> |
| at org.apache.ignite.internal.IgniteKernal.createCache<span class="o">(</span>IgniteKernal.java:3001<span class="o">)</span> |
| at org.apache.ignite.internal.processors.platform.client.cache.ClientCacheCreateWithNameRequest.process<span class="o">(</span>ClientCacheCreateWithNameRequest.java:48<span class="o">)</span> |
| at org.apache.ignite.internal.processors.platform.client.ClientRequestHandler.handle<span class="o">(</span>ClientRequestHandler.java:51<span class="o">)</span> |
| at org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage<span class="o">(</span>ClientListenerNioListener.java:173<span class="o">)</span> |
| at org.apache.ignite.internal.processors.odbc.ClientListenerNioListener.onMessage<span class="o">(</span>ClientListenerNioListener.java:47<span class="o">)</span> |
| at org.apache.ignite.internal.util.nio.GridNioFilterChain<span class="nv">$TailFilter</span>.onMessageReceived<span class="o">(</span>GridNioFilterChain.java:278<span class="o">)</span> |
| at org.apache.ignite.internal.util.nio.GridNioFilterAdapter.proceedMessageReceived<span class="o">(</span>GridNioFilterAdapter.java:108<span class="o">)</span> |
| at org.apache.ignite.internal.util.nio.GridNioAsyncNotifyFilter<span class="nv">$3</span>.body<span class="o">(</span>GridNioAsyncNotifyFilter.java:96<span class="o">)</span> |
| at org.apache.ignite.internal.util.worker.GridWorker.run<span class="o">(</span>GridWorker.java:119<span class="o">)</span> |
| |
| at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker<span class="o">(</span>ThreadPoolExecutor.java:1128<span class="o">)</span> |
| at java.base/java.util.concurrent.ThreadPoolExecutor<span class="nv">$Worker</span>.run<span class="o">(</span>ThreadPoolExecutor.java:628<span class="o">)</span> |
| at java.base/java.lang.Thread.run<span class="o">(</span>Thread.java:834<span class="o">)</span></code></pre> |
| </div> |
| </div> |
| <div class="paragraph"> |
| <p>You may want to retry the operation if you catch this exception.</p> |
| </div> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="destroying-caches">Destroying Caches</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>To delete a cache from all cluster nodes, call the <code>destroy()</code> method.</p> |
| </div> |
| <code-tabs><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="nc">Ignite</span> <span class="n">ignite</span> <span class="o">=</span> <span class="nc">Ignition</span><span class="o">.</span><span class="na">ignite</span><span class="o">();</span> |
| |
| <span class="nc">IgniteCache</span><span class="o"><</span><span class="nc">Long</span><span class="o">,</span> <span class="nc">String</span><span class="o">></span> <span class="n">cache</span> <span class="o">=</span> <span class="n">ignite</span><span class="o">.</span><span class="na">cache</span><span class="o">(</span><span class="s">"myCache"</span><span class="o">);</span> |
| |
| <span class="n">cache</span><span class="o">.</span><span class="na">destroy</span><span class="o">();</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C#/.NET' data-unavailable='true'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code>This API is not presently available for C#/.NET.</code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C++' data-unavailable='true'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code>This API is not presently available for C++.</code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="atomic-operations">Atomic Operations</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Once you get the instance of a cache, you can start performing get/put operations on it.</p> |
| </div> |
| <code-tabs><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="nc">IgniteCache</span><span class="o"><</span><span class="nc">Integer</span><span class="o">,</span> <span class="nc">String</span><span class="o">></span> <span class="n">cache</span> <span class="o">=</span> <span class="n">ignite</span><span class="o">.</span><span class="na">cache</span><span class="o">(</span><span class="s">"myCache"</span><span class="o">);</span> |
| |
| <span class="c1">// Store keys in the cache (the values will end up on different cache nodes).</span> |
| <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">10</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> |
| <span class="n">cache</span><span class="o">.</span><span class="na">put</span><span class="o">(</span><span class="n">i</span><span class="o">,</span> <span class="nc">Integer</span><span class="o">.</span><span class="na">toString</span><span class="o">(</span><span class="n">i</span><span class="o">));</span> |
| |
| <span class="k">for</span> <span class="o">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="o">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">10</span><span class="o">;</span> <span class="n">i</span><span class="o">++)</span> |
| <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Got [key="</span> <span class="o">+</span> <span class="n">i</span> <span class="o">+</span> <span class="s">", val="</span> <span class="o">+</span> <span class="n">cache</span><span class="o">.</span><span class="na">get</span><span class="o">(</span><span class="n">i</span><span class="o">)</span> <span class="o">+</span> <span class="sc">']'</span><span class="o">);</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C#/.NET'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="csharp"><span class="k">using</span> <span class="p">(</span><span class="kt">var</span> <span class="n">ignite</span> <span class="p">=</span> <span class="n">Ignition</span><span class="p">.</span><span class="nf">Start</span><span class="p">(</span><span class="s">"examples/config/example-cache.xml"</span><span class="p">))</span> |
| <span class="p">{</span> |
| <span class="kt">var</span> <span class="n">cache</span> <span class="p">=</span> <span class="n">ignite</span><span class="p">.</span><span class="n">GetCache</span><span class="p"><</span><span class="kt">int</span><span class="p">,</span> <span class="kt">string</span><span class="p">>(</span><span class="s">"cache_name"</span><span class="p">);</span> |
| |
| <span class="k">for</span> <span class="p">(</span><span class="kt">var</span> <span class="n">i</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">i</span> <span class="p"><</span> <span class="m">10</span><span class="p">;</span> <span class="n">i</span><span class="p">++)</span> |
| <span class="p">{</span> |
| <span class="n">cache</span><span class="p">.</span><span class="nf">Put</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">i</span><span class="p">.</span><span class="nf">ToString</span><span class="p">());</span> |
| <span class="p">}</span> |
| |
| <span class="k">for</span> <span class="p">(</span><span class="kt">var</span> <span class="n">i</span> <span class="p">=</span> <span class="m">0</span><span class="p">;</span> <span class="n">i</span> <span class="p"><</span> <span class="m">10</span><span class="p">;</span> <span class="n">i</span><span class="p">++)</span> |
| <span class="p">{</span> |
| <span class="n">Console</span><span class="p">.</span><span class="nf">Write</span><span class="p">(</span><span class="s">"Got [key="</span> <span class="p">+</span> <span class="n">i</span> <span class="p">+</span> <span class="s">", val="</span> <span class="p">+</span> <span class="n">cache</span><span class="p">.</span><span class="nf">Get</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="p">+</span> <span class="sc">']'</span><span class="p">);</span> |
| <span class="p">}</span> |
| <span class="p">}</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C++'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="cpp"><span class="n">IgniteConfiguration</span> <span class="n">cfg</span><span class="p">;</span> |
| <span class="n">cfg</span><span class="p">.</span><span class="n">springCfgPath</span> <span class="o">=</span> <span class="s">"/path/to/configuration.xml"</span><span class="p">;</span> |
| |
| <span class="k">try</span> |
| <span class="p">{</span> |
| <span class="n">Ignite</span> <span class="n">ignite</span> <span class="o">=</span> <span class="n">Ignition</span><span class="o">::</span><span class="n">Start</span><span class="p">(</span><span class="n">cfg</span><span class="p">);</span> |
| |
| <span class="n">Cache</span><span class="o"><</span><span class="kt">int32_t</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span> <span class="n">cache</span> <span class="o">=</span> <span class="n">ignite</span><span class="p">.</span><span class="n">GetOrCreateCache</span><span class="o"><</span><span class="kt">int32_t</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span><span class="p">(</span><span class="n">CACHE_NAME</span><span class="p">);</span> |
| |
| <span class="c1">// Store keys in the cache (the values will end up on different cache nodes).</span> |
| <span class="k">for</span> <span class="p">(</span><span class="kt">int32_t</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">10</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> |
| <span class="p">{</span> |
| <span class="n">cache</span><span class="p">.</span><span class="n">Put</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">to_string</span><span class="p">(</span><span class="n">i</span><span class="p">));</span> |
| <span class="p">}</span> |
| |
| <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">10</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> |
| <span class="p">{</span> |
| <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o"><<</span> <span class="s">"Got [key="</span> <span class="o"><<</span> <span class="n">i</span> <span class="o"><<</span> <span class="s">", val="</span> <span class="o">+</span> <span class="n">cache</span><span class="p">.</span><span class="n">Get</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="o"><<</span> <span class="s">"]"</span> <span class="o"><<</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> |
| <span class="p">}</span> |
| <span class="p">}</span> |
| <span class="k">catch</span> <span class="p">(</span><span class="n">IgniteError</span><span class="o">&</span> <span class="n">err</span><span class="p">)</span> |
| <span class="p">{</span> |
| <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o"><<</span> <span class="s">"An error occurred: "</span> <span class="o"><<</span> <span class="n">err</span><span class="p">.</span><span class="n">GetText</span><span class="p">()</span> <span class="o"><<</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> |
| <span class="k">return</span> <span class="n">err</span><span class="p">.</span><span class="n">GetCode</span><span class="p">();</span> |
| <span class="p">}</span></code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| <div class="admonitionblock note"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <div class="title">Note</div> |
| </td> |
| <td class="content"> |
| <div class="paragraph"> |
| <p>Bulk operations such as <code>putAll()</code> or <code>removeAll()</code> are executed as a sequence of atomic operations and can partially fail. |
| If this happens, a <code>CachePartialUpdateException</code> is thrown and contains a list of keys for which the update failed.</p> |
| </div> |
| <div class="paragraph"> |
| <p>To update a collection of entries within a single operation, consider using <a href="/docs/latest/key-value-api/transactions">transactions</a>.</p> |
| </div> |
| </td> |
| </tr> |
| </table> |
| </div> |
| <div class="paragraph"> |
| <p>Below are more examples of basic atomic operations:</p> |
| </div> |
| <code-tabs><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="c1">// Put-if-absent which returns previous value.</span> |
| <span class="nc">String</span> <span class="n">oldVal</span> <span class="o">=</span> <span class="n">cache</span><span class="o">.</span><span class="na">getAndPutIfAbsent</span><span class="o">(</span><span class="mi">11</span><span class="o">,</span> <span class="s">"Hello"</span><span class="o">);</span> |
| |
| <span class="c1">// Put-if-absent which returns boolean success flag.</span> |
| <span class="kt">boolean</span> <span class="n">success</span> <span class="o">=</span> <span class="n">cache</span><span class="o">.</span><span class="na">putIfAbsent</span><span class="o">(</span><span class="mi">22</span><span class="o">,</span> <span class="s">"World"</span><span class="o">);</span> |
| |
| <span class="c1">// Replace-if-exists operation (opposite of getAndPutIfAbsent), returns previous</span> |
| <span class="c1">// value.</span> |
| <span class="n">oldVal</span> <span class="o">=</span> <span class="n">cache</span><span class="o">.</span><span class="na">getAndReplace</span><span class="o">(</span><span class="mi">11</span><span class="o">,</span> <span class="s">"New value"</span><span class="o">);</span> |
| |
| <span class="c1">// Replace-if-exists operation (opposite of putIfAbsent), returns boolean</span> |
| <span class="c1">// success flag.</span> |
| <span class="n">success</span> <span class="o">=</span> <span class="n">cache</span><span class="o">.</span><span class="na">replace</span><span class="o">(</span><span class="mi">22</span><span class="o">,</span> <span class="s">"Other new value"</span><span class="o">);</span> |
| |
| <span class="c1">// Replace-if-matches operation.</span> |
| <span class="n">success</span> <span class="o">=</span> <span class="n">cache</span><span class="o">.</span><span class="na">replace</span><span class="o">(</span><span class="mi">22</span><span class="o">,</span> <span class="s">"Other new value"</span><span class="o">,</span> <span class="s">"Yet-another-new-value"</span><span class="o">);</span> |
| |
| <span class="c1">// Remove-if-matches operation.</span> |
| <span class="n">success</span> <span class="o">=</span> <span class="n">cache</span><span class="o">.</span><span class="na">remove</span><span class="o">(</span><span class="mi">11</span><span class="o">,</span> <span class="s">"Hello"</span><span class="o">);</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C#/.NET'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="csharp"><span class="k">using</span> <span class="p">(</span><span class="kt">var</span> <span class="n">ignite</span> <span class="p">=</span> <span class="n">Ignition</span><span class="p">.</span><span class="nf">Start</span><span class="p">(</span><span class="s">"examples/config/example-cache.xml"</span><span class="p">))</span> |
| <span class="p">{</span> |
| <span class="kt">var</span> <span class="n">cache</span> <span class="p">=</span> <span class="n">ignite</span><span class="p">.</span><span class="n">GetCache</span><span class="p"><</span><span class="kt">string</span><span class="p">,</span> <span class="kt">int</span><span class="p">>(</span><span class="s">"cache_name"</span><span class="p">);</span> |
| |
| <span class="c1">// Put-if-absent which returns previous value.</span> |
| <span class="kt">var</span> <span class="n">oldVal</span> <span class="p">=</span> <span class="n">cache</span><span class="p">.</span><span class="nf">GetAndPutIfAbsent</span><span class="p">(</span><span class="s">"Hello"</span><span class="p">,</span> <span class="m">11</span><span class="p">);</span> |
| |
| <span class="c1">// Put-if-absent which returns boolean success flag.</span> |
| <span class="kt">var</span> <span class="n">success</span> <span class="p">=</span> <span class="n">cache</span><span class="p">.</span><span class="nf">PutIfAbsent</span><span class="p">(</span><span class="s">"World"</span><span class="p">,</span> <span class="m">22</span><span class="p">);</span> |
| |
| <span class="c1">// Replace-if-exists operation (opposite of getAndPutIfAbsent), returns previous value.</span> |
| <span class="n">oldVal</span> <span class="p">=</span> <span class="n">cache</span><span class="p">.</span><span class="nf">GetAndReplace</span><span class="p">(</span><span class="s">"Hello"</span><span class="p">,</span> <span class="m">11</span><span class="p">);</span> |
| |
| <span class="c1">// Replace-if-exists operation (opposite of putIfAbsent), returns boolean success flag.</span> |
| <span class="n">success</span> <span class="p">=</span> <span class="n">cache</span><span class="p">.</span><span class="nf">Replace</span><span class="p">(</span><span class="s">"World"</span><span class="p">,</span> <span class="m">22</span><span class="p">);</span> |
| |
| <span class="c1">// Replace-if-matches operation.</span> |
| <span class="n">success</span> <span class="p">=</span> <span class="n">cache</span><span class="p">.</span><span class="nf">Replace</span><span class="p">(</span><span class="s">"World"</span><span class="p">,</span> <span class="m">2</span><span class="p">,</span> <span class="m">22</span><span class="p">);</span> |
| |
| <span class="c1">// Remove-if-matches operation.</span> |
| <span class="n">success</span> <span class="p">=</span> <span class="n">cache</span><span class="p">.</span><span class="nf">Remove</span><span class="p">(</span><span class="s">"Hello"</span><span class="p">,</span> <span class="m">1</span><span class="p">);</span> |
| <span class="p">}</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C++'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="cpp"><span class="n">IgniteConfiguration</span> <span class="n">cfg</span><span class="p">;</span> |
| <span class="n">cfg</span><span class="p">.</span><span class="n">springCfgPath</span> <span class="o">=</span> <span class="s">"/path/to/configuration.xml"</span><span class="p">;</span> |
| |
| <span class="n">Ignite</span> <span class="n">ignite</span> <span class="o">=</span> <span class="n">Ignition</span><span class="o">::</span><span class="n">Start</span><span class="p">(</span><span class="n">cfg</span><span class="p">);</span> |
| |
| <span class="n">Cache</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="kt">int32_t</span><span class="o">></span> <span class="n">cache</span> <span class="o">=</span> <span class="n">ignite</span><span class="p">.</span><span class="n">GetOrCreateCache</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="kt">int32_t</span><span class="o">></span><span class="p">(</span><span class="s">"myNewCache"</span><span class="p">);</span> |
| |
| <span class="c1">// Put-if-absent which returns previous value.</span> |
| <span class="kt">int32_t</span> <span class="n">oldVal</span> <span class="o">=</span> <span class="n">cache</span><span class="p">.</span><span class="n">GetAndPutIfAbsent</span><span class="p">(</span><span class="s">"Hello"</span><span class="p">,</span> <span class="mi">11</span><span class="p">);</span> |
| |
| <span class="c1">// Put-if-absent which returns boolean success flag.</span> |
| <span class="n">boolean</span> <span class="n">success</span> <span class="o">=</span> <span class="n">cache</span><span class="p">.</span><span class="n">PutIfAbsent</span><span class="p">(</span><span class="s">"World"</span><span class="p">,</span> <span class="mi">22</span><span class="p">);</span> |
| |
| <span class="c1">// Replace-if-exists operation (opposite of getAndPutIfAbsent), returns previous value.</span> |
| <span class="n">oldVal</span> <span class="o">=</span> <span class="n">cache</span><span class="p">.</span><span class="n">GetAndReplace</span><span class="p">(</span><span class="s">"Hello"</span><span class="p">,</span> <span class="mi">11</span><span class="p">);</span> |
| |
| <span class="c1">// Replace-if-exists operation (opposite of putIfAbsent), returns boolean success flag.</span> |
| <span class="n">success</span> <span class="o">=</span> <span class="n">cache</span><span class="p">.</span><span class="n">Replace</span><span class="p">(</span><span class="s">"World"</span><span class="p">,</span> <span class="mi">22</span><span class="p">);</span> |
| |
| <span class="c1">// Replace-if-matches operation.</span> |
| <span class="n">success</span> <span class="o">=</span> <span class="n">cache</span><span class="p">.</span><span class="n">Replace</span><span class="p">(</span><span class="s">"World"</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">22</span><span class="p">);</span> |
| |
| <span class="c1">// Remove-if-matches operation.</span> |
| <span class="n">success</span> <span class="o">=</span> <span class="n">cache</span><span class="p">.</span><span class="n">Remove</span><span class="p">(</span><span class="s">"Hello"</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span></code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| </div> |
| </div> |
| <div class="sect1"> |
| <h2 id="asynchronous-execution">Asynchronous Execution</h2> |
| <div class="sectionbody"> |
| <div class="paragraph"> |
| <p>Most of the cache operations have asynchronous counterparts that have the "Async" suffix in their names.</p> |
| </div> |
| <code-tabs><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="c1">// a synchronous get</span> |
| <span class="no">V</span> <span class="nf">get</span><span class="o">(</span><span class="no">K</span> <span class="n">key</span><span class="o">);</span> |
| |
| <span class="c1">// an asynchronous get</span> |
| <span class="nc">IgniteFuture</span><span class="o"><</span><span class="no">V</span><span class="o">></span> <span class="nf">getAsync</span><span class="o">(</span><span class="no">K</span> <span class="n">key</span><span class="o">);</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C#/.NET'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="csharp"><span class="c1">// a synchronous get</span> |
| <span class="n">TV</span> <span class="nf">Get</span><span class="p">(</span><span class="n">TK</span> <span class="n">key</span><span class="p">);</span> |
| |
| <span class="c1">// an asynchronous get</span> |
| <span class="n">Task</span><span class="p"><</span><span class="n">TV</span><span class="p">></span> <span class="nf">GetAsync</span><span class="p">(</span><span class="n">TK</span> <span class="n">key</span><span class="p">);</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C++'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="cpp"><span class="c1">// a synchronous get</span> |
| <span class="n">V</span> <span class="nf">Get</span><span class="p">(</span><span class="n">K</span> <span class="n">key</span><span class="p">);</span> |
| |
| <span class="c1">// an asynchronous get</span> |
| <span class="n">Future</span><span class="o"><</span><span class="n">V</span><span class="o">></span> <span class="n">GetAsync</span><span class="p">(</span><span class="n">K</span> <span class="n">key</span><span class="p">);</span></code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| <div class="paragraph"> |
| <p>The asynchronous operations return an object that represents the result of the operation. You can wait for the completion of the operation in either blocking or non-blocking manner.</p> |
| </div> |
| <div class="paragraph"> |
| <p>To wait for the results in a non-blocking fashion, register a closure using the <code>IgniteFuture.listen()</code> or <code>IgniteFuture.chain()</code> method. The closure is called when the operation is completed.</p> |
| </div> |
| <code-tabs><code-tab data-tab='Java'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="java"><span class="nc">IgniteCompute</span> <span class="n">compute</span> <span class="o">=</span> <span class="n">ignite</span><span class="o">.</span><span class="na">compute</span><span class="o">();</span> |
| |
| <span class="c1">// Execute a closure asynchronously.</span> |
| <span class="nc">IgniteFuture</span><span class="o"><</span><span class="nc">String</span><span class="o">></span> <span class="n">fut</span> <span class="o">=</span> <span class="n">compute</span><span class="o">.</span><span class="na">callAsync</span><span class="o">(()</span> <span class="o">-></span> <span class="s">"Hello World"</span><span class="o">);</span> |
| |
| <span class="c1">// Listen for completion and print out the result.</span> |
| <span class="n">fut</span><span class="o">.</span><span class="na">listen</span><span class="o">(</span><span class="n">f</span> <span class="o">-></span> <span class="nc">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span><span class="o">(</span><span class="s">"Job result: "</span> <span class="o">+</span> <span class="n">f</span><span class="o">.</span><span class="na">get</span><span class="o">()));</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C#/.NET'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="csharp"><span class="k">class</span> <span class="nc">HelloworldFunc</span> <span class="p">:</span> <span class="n">IComputeFunc</span><span class="p"><</span><span class="kt">string</span><span class="p">></span> |
| <span class="p">{</span> |
| <span class="k">public</span> <span class="kt">string</span> <span class="nf">Invoke</span><span class="p">()</span> |
| <span class="p">{</span> |
| <span class="k">return</span> <span class="s">"Hello World"</span><span class="p">;</span> |
| <span class="p">}</span> |
| <span class="p">}</span> |
| |
| <span class="k">public</span> <span class="k">static</span> <span class="k">void</span> <span class="nf">AsynchronousExecution</span><span class="p">()</span> |
| <span class="p">{</span> |
| <span class="kt">var</span> <span class="n">ignite</span> <span class="p">=</span> <span class="n">Ignition</span><span class="p">.</span><span class="nf">Start</span><span class="p">();</span> |
| <span class="kt">var</span> <span class="n">compute</span> <span class="p">=</span> <span class="n">ignite</span><span class="p">.</span><span class="nf">GetCompute</span><span class="p">();</span> |
| |
| <span class="c1">//Execute a closure asynchronously</span> |
| <span class="kt">var</span> <span class="n">fut</span> <span class="p">=</span> <span class="n">compute</span><span class="p">.</span><span class="nf">CallAsync</span><span class="p">(</span><span class="k">new</span> <span class="nf">HelloworldFunc</span><span class="p">());</span> |
| |
| <span class="c1">// Listen for completion and print out the result</span> |
| <span class="n">fut</span><span class="p">.</span><span class="nf">ContinueWith</span><span class="p">(</span><span class="n">Console</span><span class="p">.</span><span class="n">Write</span><span class="p">);</span> |
| <span class="p">}</span></code></pre> |
| </div> |
| </div></code-tab><code-tab data-tab='C++'><div class="listingblock"> |
| <div class="content"> |
| <pre class="rouge highlight"><code data-lang="cpp"><span class="cm">/* |
| * Function class. |
| */</span> |
| <span class="k">class</span> <span class="nc">HelloWorld</span> <span class="o">:</span> <span class="k">public</span> <span class="n">compute</span><span class="o">::</span><span class="n">ComputeFunc</span><span class="o"><</span><span class="kt">void</span><span class="o">></span> |
| <span class="p">{</span> |
| <span class="k">friend</span> <span class="k">struct</span> <span class="nc">ignite</span><span class="o">::</span><span class="n">binary</span><span class="o">::</span><span class="n">BinaryType</span><span class="o"><</span><span class="n">HelloWorld</span><span class="o">></span><span class="p">;</span> |
| <span class="nl">public:</span> |
| <span class="cm">/* |
| * Default constructor. |
| */</span> |
| <span class="n">HelloWorld</span><span class="p">()</span> |
| <span class="p">{</span> |
| <span class="c1">// No-op.</span> |
| <span class="p">}</span> |
| |
| <span class="cm">/** |
| * Callback. |
| */</span> |
| <span class="k">virtual</span> <span class="kt">void</span> <span class="n">Call</span><span class="p">()</span> |
| <span class="p">{</span> |
| <span class="n">std</span><span class="o">::</span><span class="n">cout</span> <span class="o"><<</span> <span class="s">"Job Result: Hello World"</span> <span class="o"><<</span> <span class="n">std</span><span class="o">::</span><span class="n">endl</span><span class="p">;</span> |
| <span class="p">}</span> |
| |
| <span class="p">};</span> |
| |
| <span class="cm">/** |
| * Binary type structure. Defines a set of functions required for type to be serialized and deserialized. |
| */</span> |
| <span class="k">namespace</span> <span class="n">ignite</span> |
| <span class="p">{</span> |
| <span class="k">namespace</span> <span class="n">binary</span> |
| <span class="p">{</span> |
| <span class="k">template</span><span class="o"><</span><span class="p">></span> |
| <span class="k">struct</span> <span class="nc">BinaryType</span><span class="o"><</span><span class="n">HelloWorld</span><span class="o">></span> |
| <span class="p">{</span> |
| <span class="k">static</span> <span class="kt">int32_t</span> <span class="n">GetTypeId</span><span class="p">()</span> |
| <span class="p">{</span> |
| <span class="k">return</span> <span class="n">GetBinaryStringHashCode</span><span class="p">(</span><span class="s">"HelloWorld"</span><span class="p">);</span> |
| <span class="p">}</span> |
| |
| <span class="k">static</span> <span class="kt">void</span> <span class="n">GetTypeName</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&</span> <span class="n">dst</span><span class="p">)</span> |
| <span class="p">{</span> |
| <span class="n">dst</span> <span class="o">=</span> <span class="s">"HelloWorld"</span><span class="p">;</span> |
| <span class="p">}</span> |
| |
| <span class="k">static</span> <span class="kt">int32_t</span> <span class="n">GetFieldId</span><span class="p">(</span><span class="k">const</span> <span class="kt">char</span><span class="o">*</span> <span class="n">name</span><span class="p">)</span> |
| <span class="p">{</span> |
| <span class="k">return</span> <span class="n">GetBinaryStringHashCode</span><span class="p">(</span><span class="n">name</span><span class="p">);</span> |
| <span class="p">}</span> |
| |
| <span class="k">static</span> <span class="kt">int32_t</span> <span class="n">GetHashCode</span><span class="p">(</span><span class="k">const</span> <span class="n">HelloWorld</span><span class="o">&</span> <span class="n">obj</span><span class="p">)</span> |
| <span class="p">{</span> |
| <span class="k">return</span> <span class="mi">0</span><span class="p">;</span> |
| <span class="p">}</span> |
| |
| <span class="k">static</span> <span class="kt">bool</span> <span class="n">IsNull</span><span class="p">(</span><span class="k">const</span> <span class="n">HelloWorld</span><span class="o">&</span> <span class="n">obj</span><span class="p">)</span> |
| <span class="p">{</span> |
| <span class="k">return</span> <span class="nb">false</span><span class="p">;</span> |
| <span class="p">}</span> |
| |
| <span class="k">static</span> <span class="kt">void</span> <span class="n">GetNull</span><span class="p">(</span><span class="n">HelloWorld</span><span class="o">&</span> <span class="n">dst</span><span class="p">)</span> |
| <span class="p">{</span> |
| <span class="n">dst</span> <span class="o">=</span> <span class="n">HelloWorld</span><span class="p">();</span> |
| <span class="p">}</span> |
| |
| <span class="k">static</span> <span class="kt">void</span> <span class="n">Write</span><span class="p">(</span><span class="n">BinaryWriter</span><span class="o">&</span> <span class="n">writer</span><span class="p">,</span> <span class="k">const</span> <span class="n">HelloWorld</span><span class="o">&</span> <span class="n">obj</span><span class="p">)</span> |
| <span class="p">{</span> |
| <span class="c1">// No-op.</span> |
| <span class="p">}</span> |
| |
| <span class="k">static</span> <span class="kt">void</span> <span class="n">Read</span><span class="p">(</span><span class="n">BinaryReader</span><span class="o">&</span> <span class="n">reader</span><span class="p">,</span> <span class="n">HelloWorld</span><span class="o">&</span> <span class="n">dst</span><span class="p">)</span> |
| <span class="p">{</span> |
| <span class="c1">// No-op.</span> |
| <span class="p">}</span> |
| <span class="p">};</span> |
| <span class="p">}</span> |
| <span class="p">}</span> |
| |
| <span class="kt">int</span> <span class="nf">main</span><span class="p">()</span> |
| <span class="p">{</span> |
| <span class="n">IgniteConfiguration</span> <span class="n">cfg</span><span class="p">;</span> |
| <span class="n">cfg</span><span class="p">.</span><span class="n">springCfgPath</span> <span class="o">=</span> <span class="s">"/path/to/configuration.xml"</span><span class="p">;</span> |
| |
| <span class="n">Ignite</span> <span class="n">ignite</span> <span class="o">=</span> <span class="n">Ignition</span><span class="o">::</span><span class="n">Start</span><span class="p">(</span><span class="n">cfg</span><span class="p">);</span> |
| |
| <span class="c1">// Get binding instance.</span> |
| <span class="n">IgniteBinding</span> <span class="n">binding</span> <span class="o">=</span> <span class="n">ignite</span><span class="p">.</span><span class="n">GetBinding</span><span class="p">();</span> |
| |
| <span class="c1">// Registering our class as a compute function.</span> |
| <span class="n">binding</span><span class="p">.</span><span class="n">RegisterComputeFunc</span><span class="o"><</span><span class="n">HelloWorld</span><span class="o">></span><span class="p">();</span> |
| |
| <span class="c1">// Get compute instance.</span> |
| <span class="n">compute</span><span class="o">::</span><span class="n">Compute</span> <span class="n">compute</span> <span class="o">=</span> <span class="n">ignite</span><span class="p">.</span><span class="n">GetCompute</span><span class="p">();</span> |
| |
| <span class="c1">// Declaring function instance.</span> |
| <span class="n">HelloWorld</span> <span class="n">helloWorld</span><span class="p">;</span> |
| |
| <span class="c1">// Making asynchronous call.</span> |
| <span class="n">compute</span><span class="p">.</span><span class="n">RunAsync</span><span class="p">(</span><span class="n">helloWorld</span><span class="p">);</span> |
| <span class="p">}</span></code></pre> |
| </div> |
| </div></code-tab></code-tabs> |
| <div class="admonitionblock note"> |
| <table> |
| <tr> |
| <td class="icon"> |
| <div class="title">Note</div> |
| </td> |
| <td class="content"> |
| <h3 id="closures-execution-and-thread-pools" class="discrete">Closures Execution and Thread Pools</h3> |
| <div class="paragraph"> |
| <p>If an asynchronous operation is completed by the time the closure is passed to either the <code>IgniteFuture.listen()</code> or <code>IgniteFuture.chain()</code> method, then the closure is executed synchronously by the calling thread. Otherwise, the closure is executed asynchronously when the operation is completed.</p> |
| </div> |
| <div class="paragraph"> |
| <p>Depending on the type of operation, the closure might be called by a thread from the system pool (asynchronous cache operations) or by a thread from the public pool (asynchronous compute operations). Therefore, you should avoid calling synchronous cache and compute operations from inside the closure, because it may lead to a deadlock due to pools starvation.</p> |
| </div> |
| <div class="paragraph"> |
| <p>To achieve nested execution of asynchronous compute operations, you can take advantage of <a href="/docs/latest/perf-troubleshooting-guide/thread-pools-tuning#creating-custom-thread-pool">custom thread pools</a>.</p> |
| </div> |
| </td> |
| </tr> |
| </table> |
| </div> |
| </div> |
| </div> |
| <div class="copyright"> |
| © 2020 The Apache Software Foundation.<br/> |
| Apache, Apache Ignite, the Apache feather and the Apache Ignite logo are either registered trademarks or trademarks of The Apache Software Foundation. |
| |
| </div> |
| |
| </article> |
| <nav class="right-nav" data-swiftype-index='false'> |
| <ul class="sectlevel1"> |
| <li><a href="#getting-an-instance-of-a-cache">Getting an Instance of a Cache</a></li> |
| <li><a href="#creating-caches-dynamically">Creating Caches Dynamically</a></li> |
| <li><a href="#destroying-caches">Destroying Caches</a></li> |
| <li><a href="#atomic-operations">Atomic Operations</a></li> |
| <li><a href="#asynchronous-execution">Asynchronous Execution</a></li> |
| </ul> |
| |
| |
| <footer> |
| </footer> |
| |
| </nav> |
| |
| </section> |
| <script type='module' src='/assets/js/code-copy-to-clipboard.js' async crossorigin></script> |
| |
| <script> |
| // inits deep anchors -- needs to be done here because of https://www.bryanbraun.com/anchorjs/#dont-run-it-too-late |
| anchors.add('.page-docs h1, .page-docs h2, .page-docs h3:not(.discrete), .page-docs h4, .page-docs h5'); |
| anchors.options = { |
| placement: 'right', |
| visible: 'always' |
| }; |
| </script> |
| <!-- load google fonts async --> |
| <script type="text/javascript"> |
| WebFontConfig = { |
| google: { families: [ 'Open+Sans:300,400,600,700&display=swap' ] } |
| }; |
| (function() { |
| var wf = document.createElement('script'); |
| wf.src = 'https://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js'; |
| wf.type = 'text/javascript'; |
| wf.async = 'true'; |
| var s = document.getElementsByTagName('script')[0]; |
| s.parentNode.insertBefore(wf, s); |
| })(); </script> |
| <script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script> |
| <script> |
| docsearch({ |
| // Your apiKey and indexName will be given to you once |
| // we create your config |
| apiKey: '3eee686c0ebe39eff3baeb18c56fa5f8', |
| indexName: 'apache_ignite', |
| // Replace inputSelector with a CSS selector |
| // matching your search input |
| inputSelector: '#search-input', |
| // algoliaOptions: { 'facetFilters': ["version:$VERSION"] }, |
| |
| // Set debug to true to inspect the dropdown |
| debug: false, |
| }); |
| </script> |
| <script type='module' src='/assets/js/index.js?1609305749' async crossorigin></script> |
| <script type='module' src='/assets/js/versioning.js?1609305749' async crossorigin></script> |
| </body> |
| |
| </html> |