| extend ../_components/base.pug |
| |
| block pagetitle |
| title Distributed In-Memory Cache - Apache Ignite |
| meta(name="description", content="Apache Ignite as a Distributed In-Memory Cache accelerates and scales your databases, services, and APIs. Learn more about the cache-aside deployment and the read-through/write-through caching strategies with Apache Ignite.") |
| link(rel="canonical", href="https://ignite.apache.org/use-cases/in-memory-cache.html") |
| |
| meta(property="og:title", content="Distributed In-Memory Cache - Apache Ignite") |
| meta(property="og:type", content="article") |
| meta(property="og:url", content="https://ignite.apache.org/use-cases/in-memory-cache.html") |
| meta(property="og:image", content="/img/og-pic.png") |
| meta(property="og:description", content="Apache Ignite enables high-performance computing by providing APIs for data and compute-intensive calculations. Using Ignite as a HPC cluster, you can turn your commodity hardware or cloud environment into a distributed supercomputer.") |
| |
| block css |
| link(rel="stylesheet", href="../css/native-persistence.css?ver=" + config.version) |
| link(rel="stylesheet", href="../css/digital-hub.css?ver=" + config.version) |
| link(rel="stylesheet", href="../css/in-memory-cache.css?ver=" + config.version) |
| |
| |
| |
| block main |
| - global.pageHref = "usecases" |
| - config.hdrClassName = "hdr__blue" |
| include ../_components/header.pug |
| |
| |
| section.innerhero |
| .container.innerhero__cont |
| .innerhero__main.innerhero__main--long |
| //- .innerhero__pre.pb-5 Apache Ignite |
| h1.h1.innerhero__h1 Distributed <br>In-Memory Cache<br> |
| span.with-apache With Apache Ignite |
| .innerhero__descr.pt-2.h5. |
| Improve the performance and scalability of your applications, <br> |
| databases, and microservices with Apache Ignite |
| .innerhero__action |
| a.button.innerhero__button(href="https://ignite.apache.org/docs/latest/index") Start Coding |
| img.innerhero__pic.innerhero__pic--inmemory(src="/img/usecases/in-memory-hero.svg", alt="Distributed In-Memory Cache") |
| // /.innerhero |
| |
| |
| |
| section.inmememor1.container |
| header.blockheader.blockheader--spl.flexi |
| h2.capstext.pb-3 What Is In-Memory Cache? |
| .inmememor1__text |
| p In-memory cache is a storage layer placed between applications and databases. The cache keeps your hot data in memory to offload existing databases and accelerate applications. |
| // /.inmememor1 |
| |
| |
| section.inmememor-adv |
| .container |
| header.blockheader.blockheader--spl.flexi |
| h2.h4 Advantages of Distributed In-Memory Cache |
| .blockheader__right.fz20. |
| A distributed in-memory cache is <strong>the most straightforward and scalable</strong> way to accelerate your existing applications and databases, thanks to: |
| .inmememor-adv__wrap |
| .inmememor-adv__item |
| h3.h4 Speed |
| .inmememor-adv__text Memory as a storage layer provides the lowest latency and highest throughput. Laws of physics. |
| .inmememor-adv__item |
| h3.h4 Scale |
| .inmememor-adv__text Horizontal scalability lets you grow the cluster size to an unlimited extent to accommodate data size and throughput. |
| // /.inmememor-adv |
| |
| |
| |
| section.inmememor-api.container |
| header.blockheader.blockheader--spl.flexi |
| h2.h4.blockheader__left.blockheader__left--full Unlike Standard In-Memory Caches, Apache Ignite <br>Supports Essential Developers APIs |
| .inmememor-api__wrap.flexi |
| .inmememor-api__item |
| img.inmememor-api__icon(src="/img/features/in-memory/01-ACID-Transactions.svg", alt="") |
| p.fz20.pt-3 ACID transactions <br>to ensure consistency <br>of data |
| .inmememor-api__item |
| img.inmememor-api__icon(src="/img/features/in-memory/02-sql.svg", alt="") |
| p.fz20.pt-3 SQL queries execution |
| .inmememor-api__item |
| img.inmememor-api__icon(src="/img/features/in-memory/03-user.svg", alt="") |
| p.fz20.pt-3 Custom computations, <br>e.g. on Java, available |
| // /.inmememor-api |
| |
| |
| |
| section.inmememor2.container |
| h2.h4 Read-Through / Write-Through Caching |
| p.fz20.pt-5 |
| strong How It Works |
| .inmememor2__work.flexi.pt-2 |
| .inmememor2__left |
| p |
| em The read-through/write-through caching strategy can be <br>classified as an in-memory, data-grid type of deployment. |
| .inmememor2__right |
| p When Apache Ignite is deployed as a data grid, the application layer begins to treat Ignite as the primary store. |
| p As applications write to and read from the data grid, Ignite ensures that all underlying external databases stay updated and are consistent with the in-memory data. |
| .inmememor2__picwrap |
| picture |
| source(media="(min-width: 1024px)", srcset="/img/features/in-memory/write-through-caching.svg", sizes="") |
| img(src="/img/features/in-memory/write-through-caching-mob.svg", alt="") |
| p.fz20 |
| strong How It Works |
| .inmememor2__work.flexi.pt-3 |
| .inmememor2__left.inmememor2__left--icon |
| p This strategy is recommended for architectures that need to: |
| ul.dashlist.pt-1 |
| li accelerate disk-based databases; |
| li create a shared caching layer across various data sources. |
| .inmememor2__right |
| p Ignite integrates with many databases out-of-the-box and, in write-through or write-behind mode, can synchronize all changes to the databases. |
| p The strategy also applies to ACID transactions: Ignite will coordinate and commit a transaction across its in-memory cluster as well as to a relational database. |
| p Read-through capability implies that, if a record is missing from memory, a cache can read the data from an external database. Ignite fully supports this capability for key-value APIs. |
| p When you use Ignite SQL, you must preload the dataset into memory—because Ignite SQL can query on-disk data only if the data is stored in native persistence. |
| // /.inmememor2 |
| |
| |
| |
| section.inmememor3.container.pt-5 |
| h2.h4 Cache-Aside Deployment |
| .inmememor2__picwrap |
| picture |
| source(media="(min-width: 1024px)", srcset="/img/features/in-memory/cache-aside-deployment.svg", sizes="") |
| img(src="/img/features/in-memory/cache-aside-deployment-mob.svg", alt="") |
| p.fz20.pt-3 |
| strong When It Works |
| .inmememor2__work.flexi.pt-3 |
| .inmememor2__left |
| p This strategy works well in two cases: |
| ul.pt-1 |
| li 1. The cached data is relatively static, i.e. not updated frequently |
| li 2. A temporary data lag is allowed between the primary store and the cache |
| .inmememor2__right |
| p It’s usually assumed that changes will be fully replicated eventually and, <br>thus, the cache and the primary store will become consistent. |
| |
| .inmememor3__bottom |
| h3.fz20 Cache-Aside Deployment And Native Persistence |
| .inmememor3__botwrap.flexi.pt-3 |
| .inmememor2__left |
| p When Apache Ignite is deployed in a cache-aside configuration, its native persistence can be used as a disk store for Ignite datasets. <a href="/arch/native-persistence.html">Native persistence</a> allows for the elimination of the time-consuming cache warm-up step. |
| p As native persistence maintains a full copy of data on disk, you can cache a subset of records in memory. If a required data record is missing from memory, then Ignite reads the record from the disk automatically, regardless of which API you use — be it SQL, key-value, or scan queries. |
| .inmememor2__right |
| ul.inmememor3__checklist |
| li Seconds needed for recovery |
| li Full copy of cached records is duplicated on disk |
| li Use any API: SQL, key-value, or scan queries |
| // /.inmememor3 |
| |
| |
| |
| section.hub5.inmememorvideowrap.pt-5 |
| .container.pt-5 |
| h2.capstext.pt-5 IN-MEMORY CACHE USER STORIES |
| .highcases__two |
| .hub5__twowrap.flexi.pt-5 |
| .hub5__item |
| +powvideo( |
| "https://www.youtube.com/watch?v=Mhtt2QL_qCQ", |
| "/img/poweredby/videos/002.png", |
| "", |
| "Apache Ignite, Load Reduction and System Scaling for Banking", |
| "hub5__video comvideo__txt--black" |
| ) |
| .h4.hub5__title Raiffeisen Bank |
| .comvideo__descr |
| p As users transition to digital channels, the load on the bank's systems has increased. Therefore, load reduction and system scaling are constant and top priorities. |
| |
| |
| |
| section.native-bottom.container |
| .native-bottom__grid |
| article.nativebotblock |
| .h4.nativebotblock__title |
| img(src="/img/features/native-rocket.svg", alt="").nativebotblock__icon |
| span Ready to Start? |
| p.nativebotblock__text Discover our quick start guide and build your first application in 5-10 minutes |
| a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/#quick-start-guides ", target="_blank") Quick Start Guide |
| article.nativebotblock.nativebotblock--learn |
| .h4.nativebotblock__title |
| img(src="/img/features/native-docs.svg", alt="").nativebotblock__icon |
| span Want to View More Use-Cases? |
| p.nativebotblock__text Read In-Memory Data Grid article |
| a.nativebotblock__link.arrowlink(href="/use-cases/in-memory-data-grid.html", target="_blank") In-Memory Data Grid |