From c8eeadee42695ed67dac47dbb9d7a66a1c9a8c6d Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Fri, 2 Aug 2019 13:37:51 +0300 Subject: Caching configuration for users and discussions --- .../java/com/juick/server/configuration/WwwAppConfiguration.java | 5 +++-- src/main/java/com/juick/service/MessagesService.java | 5 +++++ src/main/java/com/juick/service/UserService.java | 5 ++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/juick/server/configuration/WwwAppConfiguration.java b/src/main/java/com/juick/server/configuration/WwwAppConfiguration.java index 635302c7..0c5c8dbf 100644 --- a/src/main/java/com/juick/server/configuration/WwwAppConfiguration.java +++ b/src/main/java/com/juick/server/configuration/WwwAppConfiguration.java @@ -32,6 +32,7 @@ import org.commonmark.node.Link; import org.commonmark.parser.Parser; import org.commonmark.renderer.html.HtmlRenderer; import org.springframework.beans.factory.annotation.Value; +import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.caffeine.CaffeineCacheManager; import org.springframework.context.annotation.Bean; @@ -61,8 +62,8 @@ public class WwwAppConfiguration implements WebMvcConfigurer { @Value("${img_path:#{systemEnvironment['TEMP'] ?: '/tmp'}}") private String imgDir; @Bean - public CaffeineCacheManager cacheManager() { - return new CaffeineCacheManager("help"); + public CacheManager cacheManager() { + return new CaffeineCacheManager("help", "users_by_name", "discussions"); } @Bean diff --git a/src/main/java/com/juick/service/MessagesService.java b/src/main/java/com/juick/service/MessagesService.java index e98b2b1d..490e0cfc 100644 --- a/src/main/java/com/juick/service/MessagesService.java +++ b/src/main/java/com/juick/service/MessagesService.java @@ -22,6 +22,8 @@ import com.juick.Reaction; import com.juick.User; import com.juick.model.ResponseReply; import org.apache.commons.lang3.tuple.Pair; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import java.net.URI; import java.util.*; @@ -30,8 +32,10 @@ import java.util.*; * Created by aalexeev on 11/13/16. */ public interface MessagesService { + @CacheEvict(value = "discussions", allEntries = true) int createMessage(int uid, String txt, String attachment, List tags); + @CacheEvict(value = "discussions", allEntries = true) int createReply(int mid, int rid, User user, String txt, String attachment); int getReplyIDIncrement(int mid); @@ -83,6 +87,7 @@ public interface MessagesService { List getPrivate(int uid, int before); + @Cacheable(value = "discussions", key="#uid") List getDiscussions(int uid, Long to); List getRecommended(int uid, int before); diff --git a/src/main/java/com/juick/service/UserService.java b/src/main/java/com/juick/service/UserService.java index 0d4efcfc..63b75110 100644 --- a/src/main/java/com/juick/service/UserService.java +++ b/src/main/java/com/juick/service/UserService.java @@ -20,9 +20,10 @@ package com.juick.service; import com.juick.Message; import com.juick.User; import com.juick.model.Auth; +import org.springframework.cache.annotation.CacheEvict; +import org.springframework.cache.annotation.Cacheable; import javax.annotation.Nonnull; -import java.time.Instant; import java.util.Collection; import java.util.List; import java.util.Optional; @@ -40,10 +41,12 @@ public interface UserService { String getSignUpHashByTelegramID(Long telegramId, String username); + @CacheEvict(value = "users_by_name", allEntries = true) Optional createUser(String username, String password); Optional getUserByUID(int uid); + @Cacheable(value = "users_by_name") @Nonnull User getUserByName(String username); @Nonnull User getUserByEmail(String email); -- cgit v1.2.3