From 26b00d1312c10681ed8791142e2d442555f3a45b Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 7 Jan 2019 19:11:14 +0300 Subject: [PATCH] =?UTF-8?q?Redis=20=D0=BA=D0=B0=D0=BA=20=D1=85=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=BB=D0=B8=D1=89=D0=B5=20=D0=BA=D1=8D=D1=88=20?= =?UTF-8?q?=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ks.server/pom.xml | 5 +++ .../main/java/ks/server/SpringConfigMVC.java | 16 ++++++++++ .../java/ks/server/service/CinemaService.java | 32 ++++++++++++++++++- 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/ks.server/pom.xml b/ks.server/pom.xml index 33f68f2..b7c081c 100644 --- a/ks.server/pom.xml +++ b/ks.server/pom.xml @@ -104,6 +104,11 @@ gson 2.8.5 + + redis.clients + jedis + 3.0.1 + diff --git a/ks.server/src/main/java/ks/server/SpringConfigMVC.java b/ks.server/src/main/java/ks/server/SpringConfigMVC.java index 5d54fe4..5ca98a1 100644 --- a/ks.server/src/main/java/ks/server/SpringConfigMVC.java +++ b/ks.server/src/main/java/ks/server/SpringConfigMVC.java @@ -1,5 +1,7 @@ package ks.server; +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; @@ -7,9 +9,11 @@ import org.springframework.http.converter.json.GsonHttpMessageConverter; import org.springframework.web.servlet.config.annotation.ContentNegotiationConfigurer; import org.springframework.web.servlet.config.annotation.EnableWebMvc; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; +import redis.clients.jedis.Jedis; import java.util.List; +@Slf4j @Configuration @ComponentScan({ "ks.server.controllers", @@ -28,4 +32,16 @@ public class SpringConfigMVC implements WebMvcConfigurer { public void configureContentNegotiation(ContentNegotiationConfigurer configurer) { configurer.favorPathExtension(false); } + + @Bean + public Jedis jedis() { + Jedis jedis = new Jedis("127.0.0.1", 6379); + jedis.connect(); + if (jedis.isConnected()) { + log.info("Redis server ready"); + } else { + log.warn("Redis server not ready!"); + } + return jedis; + } } diff --git a/ks.server/src/main/java/ks/server/service/CinemaService.java b/ks.server/src/main/java/ks/server/service/CinemaService.java index fac5ad1..3838d1f 100644 --- a/ks.server/src/main/java/ks/server/service/CinemaService.java +++ b/ks.server/src/main/java/ks/server/service/CinemaService.java @@ -1,19 +1,49 @@ package ks.server.service; +import com.google.gson.Gson; import ks.server.browser.Browser; import ks.server.cinema.Animevost; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; +import redis.clients.jedis.Jedis; +@Slf4j @Service public class CinemaService { + private static final Gson GSON = new Gson(); @Autowired private ApplicationContext applicationContext; + @Autowired + private Jedis jedis; - public Animevost getCinema(String uri) { + private Animevost realGet(String uri) { Animevost animevost = new Animevost(); animevost.fillInfo(uri, applicationContext.getBean(Browser.class)); return animevost; } + + public Animevost getCinema(String uri) { + if (jedis.isConnected()) { + final String key = "cache:cinema:animevost:" + uri; + if (jedis.exists(key)) { + log.info("get data from redis"); + return GSON.fromJson(jedis.get(key), Animevost.class); + } else { + log.info("get data from site"); + Animevost animevost = realGet(uri); + jedis.setex(key, 60, GSON.toJson(animevost)); + return animevost; + } + } else { + jedis.connect(); + if (jedis.isConnected()) { + return getCinema(uri); + } else { + log.warn("Redis disconnected!"); + return realGet(uri); + } + } + } }