Spring Boot EhCachingEhCacheEhCache is an open-source, Java-based cache used to boost performance. The current version of Ehcache is 3. It provides the implementation of the JSR-107 cache manager. We can use it directly. Features of EhCache
EhCache Usage PatternsThe cache uses several access patterns. There are following patterns used by EhCache:
Cache-asideIn the cache-aside pattern, first, the application consults with the cache. If the data is found, it returns the data directly. In the opposite scenario, it fetches the data from the SoR, stores it into the cache, and then return. Cache-as-SoRThe cache-as-SoR pattern represents SoR reading and writing operations to the cache. It reduces the responsibility of the application. It uses the combination of read and write pattern that includes read-through, write-through, and write-behind. It reduces the difficulty of the application. It allows the cache to solve the thundering-herd problem Read-throughThe read-through pattern also copies the cache-aside pattern while reading data from the cache. The difference between the read-through and cache-aside is that read-through pattern implements the CacheEntryFactory interface. It guides the cache how to read an object from the cache. It is better to wrap the EhCache instance with the instance of SelfPopulatingCache while using the read-through pattern. Write-throughThe write-through pattern also copies the cache-aside pattern while writing data in the cache. The difference between write-through and cache-aside pattern is that write-through pattern implements the CacheWriter interface. It configures the cache for both write-through and write-behind pattern. It writes data to the SoR in the same thread of execution. Write-behindThe write-behind pattern is different form the other three patterns. It modifies the cache entries after a configurable delay. The delay may in seconds, minutes, a day, a week, or for a long time. Simultaneously, it also queues the data to write at a later time in the same thread of execution. The data write using write-behind pattern happens outside of the scope of the transaction. It means that it creates a new transaction to commit the data in the SoR that is distinct from the main transaction. EhCaching Storage TiersEhCache allows us to use various data storage areas, such as heap, disk and clustered. We can configure a multi-storage cache (uses more than one storage area). It can be arranged and managed as tiers. The tiers are organized in order. The bottom-most tier is known as authority tier, and the other tier is known as the caching tier. It is also known as nearer or near cache. The caching tier can have more than one storage area. The hottest data kept in the caching tier because it is faster than the authority tier. Other data is kept in the authority tier that is slower but richer in comparison to the caching tier. There are four types of data storage supported by EhCache:
On-Heap StoreIt stores cache entries in Java heap memory. It shares the storage with Java application. It is fast because it uses heap but has limited storage space. The garbage collector also scans the on-heap store. Off-Heap StoreIt uses the primary memory (RAM) to store cache entries. The garbage collector does not scan it. It is slower than the on-heap store because the cache entries move to the on-heap store before use. It is limited in size. Disk StoreIt uses a disk to store cache entries. It is much slower than RAM-based stores (on and off-heap store). It is better to use a dedicated disk if you are using a disk store pattern. It enhances throughput. Clustered StoreIt stores cache entries on the remote server. It is slower than off-heap storage. It may have a failover server that provides high availability. ![]() The above diagram shows that:
Configuring EhCache
Example of EhCacheIn the following example, we are going to configure EhCache in an application. Step 1: Open the Spring Initializr https://start.spring.io/. Step 2: Select the Spring Boot version 2.3.0 M2. Step 3: Provide the Group name. We have provided the Group name com.w3cschoool. Step 4: Provide the Artifact. We have provided the Artifact spring-boot-ehcache-example. Step 5: Add the Spring Web dependency. Step 6: Click on the Generate button. When we click on the Generate button, it wraps all the specifications related to application into a Jar file and downloads it to the local system. Step 7: Extract the jar file. Step 8: Copy the folder and paste it in the STS workspace. Step 9: Import the project. File -> Import -> Existing Maven Projects -> Next -> Browse -> Select the folder spring-boot-ehcache-example -> Select Folder -> Finish It takes time to import the project. Step 10: Copy the following dependency one by one from the Maven Repository https://mvnrepository.com/ and paste it into the pom.xml file.
Note: Do not use the ehcache of the package net.sf.ehcache.pom.xml Now, we need to configure the ehcache.xml file. It tells the framework where to find the file. Step 11: Open the application.properties file and configure the EhCache by using the following property. application.properties Step 12: Open the SpringBootEhcacheExampleApplication.java file and enable caching by using the annotation @EnableCaching. SpringBootEhcacheExampleApplication.java Note: If we do not want to use annotation @EnableCaching in main application file, we can create a separate CacheConfig class and annotate that call with the annotation.Step 13: Create a model class. We have created the model class in the package com.w3cschoool with the name Student. In the model class do the following:
After completing all the above steps, the model class looks like the following. Student.java Step 14: Create a Service class that manages the student. We have created the service class with the name StudentManager. In this class, we have done the following:
StudentManager.java Now we need to create ehcache.xml file. It contains the information related to cache such as name of the cache, no of element in the memory, time to live data in the cache, etc. Step 15: Create a cache configure file named ehcache.xml in the src/main/resources folder. ehcahe.xml Now we have created all the required files. After creating all the files, the project directory looks like the following: ![]() Let's run the application. Step 16: Open the SpringBootEhcacheExampleApplication.java file and run it as Java Application. It shows the following output: Next TopicHow to Run Spring Boot Application
|
Python tutorial provides basic and advanced concepts of Python.
Vue.js is an open-source progressive JavaScript framework
HTML refers to Hypertext Markup Language. HTML is the gateway ...
Java is an object-oriented, class-based computer-programming language.
PHP is an open-source,interpreted scripting language.
Spring is a lightweight framework.Spring framework makes ...
JavaScript is an scripting language which is lightweight and cross-platform.
CSS refers to Cascading Style Sheets...
jQuery is a small and lightweight JavaScript library. jQuery ...
SQL is used to perform operations on the records stored in the database.
C programming is considered as the base for other programming languages.
JavaScript is an scripting language which is lightweight and cross-platform.
Vue.js is an open-source progressive JavaScript framework
ReactJS is a declarative, efficient, and flexible JavaScript library.
jQuery is a small and lightweight JavaScript library. jQuery ...
Node.js is a cross-platform environment and library for running JavaScript app...
TypeScript is a strongly typed superset of JavaScript which compiles to plain JavaScript.
Angular JS is an open source JavaScript framework by Google to build web app...
JSON is lightweight data-interchange format.
AJAX is an acronym for Asynchronous JavaScript and XML.
ES6 or ECMAScript 6 is a scripting language specification ...
Angular 7 is completely based on components.
jQuery UI is a set of user interface interactions built on jQuery...
Python tutorial provides basic and advanced concepts of Python.
Java is an object-oriented, class-based computer-programming language.
Node.js is a cross-platform environment and library for running JavaScript app...
PHP is an open-source,interpreted scripting language.
Go is a programming language which is developed by Google...
C programming is considered as the base for other programming languages.
C++ is an object-oriented programming language. It is an extension to C programming.
C# is a programming language of .Net Framework.
Ruby is an open-source and fully object-oriented programming language.
JSP technology is used to create web application just like Servlet technology.
The JSTL represents a set of tags to simplify the JSP development.
ASP.NET is a web framework designed and developed by Microsoft.
Perl is a cross-platform environment and library for running JavaScript...
Scala is an object-oriented and functional programming language.
VBA stands for Visual Basic for Applications.
Spring is a lightweight framework.Spring framework makes ...
Spring Boot is a Spring module that provides the RAD feature...
Django is a Web Application Framework which is used to develop web applications.
Servlet technology is robust and scalable because of java language.
The Struts 2 framework is used to develop MVC based web applications.
Hibernate is an open source, lightweight, ORM tool.
Solr is a scalable, ready-to-deploy enterprise search engine.
SQL is used to perform operations on the records stored in the database.
MySQL is a relational database management system based...
Oracle is a relational database management system.
SQL Server is software developed by Microsoft.
PostgreSQL is an ORDBMS.
DB2 is a database server developed by IBM.
Redis is a No SQL database which works on the concept of key-value pair.
SQLite is embedded relational database management system.
MongoDB is a No SQL database. It is an document-oriented database...
Memcached is a free, distributed memory object caching system.
Hibernate is an open source, lightweight, ORM tool.
PL/SQL is a block structured language that can have multiple blocks in it.
DBMS Tutorial is software that is used to manage the database.
Spark is a unified analytics engine for large-scale data processing...
IntelliJ IDEA is an IDE for Java Developers which is developed by...
Git is a modern and widely used distributed version control system in the world.
GitHub is an immense platform for code hosting.
SVN is an open-source centralized version control system.
Maven is a powerful project management tool that is based on POM.
Jsoup is a java html parser.
UML is a general-purpose, graphical modeling language.
RESTful Web Services are REST Architecture based Web Services.
Postman is one testing tools which is used for API testing.
JMeter is to analyze the performance of web application.
Jenkins builds and tests our software projects.
SEO stands for Search Engine Optimization.
MATLAB is a software package for mathematical computation, visualization...
Unity is an engine for creating games on multiple platforms.
Hadoop is an open source framework.
Pig is a high-level data flow platform for executing Map Reduce programs of Hadoop.
Spark is a unified analytics engine for large-scale data processing...
Spring Cloud is a framework for building robust cloud applications.
Spring Boot is a Spring module that provides the RAD feature...
AI is one of the fascinating and universal fields of Computer.
Cloud computing is a virtualization-based technology.
AWS stands for Amazon Web Services which uses distributed IT...
Microsoft Azure is a cloud computing platform...
IoT stands for Internet of Things...
Spring Cloud is a framework for building robust cloud applications.
Email:jjw.quan@gmail.com