package com.bahadirakin.redis; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.core.StringRedisTemplate; @EnableCaching @SpringBootApplication public class SpringRedisApplication implements CommandLineRunner { private static final Logger logger = LoggerFactory.getLogger(SpringRedisApplication.class); @Autowired private StringRedisTemplate stringRedisTemplate; @Autowired private SomeLongBusiness someLongBusiness; public static void main(String[] args) { SpringApplication.run(SpringRedisApplication.class, args); } @Bean CacheManager cacheManager(StringRedisTemplate stringRedisTemplate) { return new RedisCacheManager(stringRedisTemplate); } @Bean SomeLongBusiness someLongBusiness() { return new SomeLongBusinessImpl(); } @Override public void run(String... strings) throws Exception { // Messaging Demonstration logger.info("Sending message....."); stringRedisTemplate.opsForValue().set("message", "Hello, World"); final String message = stringRedisTemplate.opsForValue().get("message"); logger.info("Message From Redis Server {}", message); // Caching Demonstration logger.info("Heavy work is starting for the first time"); final String firstResult = someLongBusiness.doSomeHeavyWork(message); logger.info("First (Takes 5 sec): {}", firstResult); final String secondResult = someLongBusiness.doSomeHeavyWork(message); logger.info("Second: {}", secondResult); final String thirdResult = someLongBusiness.doSomeHeavyWork("Different Message"); logger.info("Third (Takes 5 sec): {}", thirdResult); final String forthResult = someLongBusiness.doSomeHeavyWork("Different Message"); logger.info("Forth: {}", forthResult); } }