In this post, I am going to explain,
a. How to create a cache using Guava CacheBuilder
b. How to store the object into the cache
c. How to retrieve the objects from cache
How to create a cache?
You can create a cache using CacheBuilder class.
Example
Cache<Integer, Employee> empCache = CacheBuilder.newBuilder().maximumSize(500).expireAfterAccess(15, TimeUnit.SECONDS).expireAfterWrite(30, TimeUnit.SECONDS).build();
How to add an object to the cache?
Using put method, you can add a <key,value> pair into the cache.
Example
empCache.put(1, new Employee(1, "Krishna", "Gurram"));
How to retrieve an element from the cache?
Using ‘getIfPresent’ method, you can retrieve an element from the cache.
Example
Employee emp1 = empCache.getIfPresent(1);
If there is an entry exist in the cache for the key 1, this method return the object, else null.
Find the below working application.
Employee.java
package com.sample.app.cache.model;
public class Employee {
private Integer id;
private String firstName;
private String lastName;
public Employee(Integer id, String firstName, String lastName) {
super();
this.id = id;
this.firstName = firstName;
this.lastName = lastName;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
@Override
public String toString() {
return "Employee [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + "]";
}
}
HelloWorld.java
package com.sample.app.cache;
import java.util.concurrent.TimeUnit;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import com.sample.app.cache.model.Employee;
public class HelloWorld {
private static void printEmployee(Employee emp, Integer id) {
if (emp == null) {
System.out.println("Employee not exist for the id " + id);
return;
}
System.out.println(emp);
}
public static void main(String args[]) throws InterruptedException {
Cache<Integer, Employee> empCache = CacheBuilder.newBuilder().maximumSize(500)
.expireAfterAccess(15, TimeUnit.SECONDS).expireAfterWrite(30, TimeUnit.SECONDS).build();
empCache.put(1, new Employee(1, "Krishna", "Gurram"));
empCache.put(2, new Employee(2, "Sailu", "PTR"));
System.out.println("Getting employee with ids 1, 2 and 3 from empCache");
Employee emp1 = empCache.getIfPresent(1);
Employee emp2 = empCache.getIfPresent(2);
Employee emp3 = empCache.getIfPresent(3);
printEmployee(emp1, 1);
printEmployee(emp2, 2);
printEmployee(emp3, 3);
System.out.println("\nGoing to sleep for 35 seconds\n");
TimeUnit.SECONDS.sleep(35);
emp1 = empCache.getIfPresent(1);
emp2 = empCache.getIfPresent(2);
emp3 = empCache.getIfPresent(3);
System.out.println("Getting employee with ids 1, 2 and 3 from empCache");
printEmployee(emp1, 1);
printEmployee(emp2, 2);
printEmployee(emp3, 3);
}
}
Output
Getting employee with ids 1, 2 and 3 from empCache Employee [id=1, firstName=Krishna, lastName=Gurram] Employee [id=2, firstName=Sailu, lastName=PTR] Employee not exist for the id 3 Going to sleep for 35 seconds Getting employee with ids 1, 2 and 3 from empCache Employee not exist for the id 1 Employee not exist for the id 2 Employee not exist for the id 3
No comments:
Post a Comment