[Codemash] Caching Made "Bootiful"!
Click here to load reader
-
Upload
viktor-gamov -
Category
Technology
-
view
615 -
download
4
Transcript of [Codemash] Caching Made "Bootiful"!
whoiam
Señor Solutions Architect @Hazelcast@gAmUssA on the internetz
• Performance
• Offload expensive parts of your architecture
• Scale up – get the most out of one machine
• Scale out – add more capacity with more machines
• Usually very fast and easy to apply
Cache is good for…
Let’s recap!
© 2017 Hazelcast Inc. @gamussa
0. Inception
public class SpringwebinarApplication {
public static interface CityService {
public String getCity();
}
@Bean
public CityService getService() {
return new CityService() {
@Override public String getCity() {
// slow code goes here!
return result;
}
};
}
}
© 2017 Hazelcast Inc. @gamussa
1. Enable Caching
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.EnableCaching;
@SpringBootApplication
@EnableCaching
public class SpringwebinarApplication {
public static interface CityService {
@Cacheable("city")
public String getCity();
}
@Bean
public CityService getService() {
return new CityService() {
@Override public String getCity() {
// slow code goes here!
return result;
}
};
}}
© 2017 Hazelcast Inc. @gamussa
2. Enable Distributed Caching
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.EnableCaching;
@SpringBootApplication
@EnableCaching
public class SpringwebinarApplication {
public static interface CityService {
@Cacheable("city")
public String getCity();
}
@Bean
public CityService getService() {
return new CityService() {
@Override public String getCity() {
// slow code goes here!
return result;
}
};
}
@Bean
public HazelcastInstance getInstance() {
// return Hazelcast.newHazelcastInstance();
return HazelcastClient.newHazelcastClient();
}
}
© 2017 Hazelcast Inc. @gamussa
3. Embrace the standards – Enable JCache
import javax.cache.annotation.CacheResult;
import org.springframework.cache.annotation.EnableCaching;
@SpringBootApplication
@EnableCaching
public class SpringwebinarApplication {
public static interface CityService {
@CacheResult(cacheName = "city")
public String getCity();
}
@Bean
public CityService getService() {
return new CityService() {
@Override public String getCity() {
// slow code goes here!
return result;
}
};
}}