提交 2d937203 编写于 作者: 街头小贩's avatar 街头小贩

更新管理端的Spring Cache

上级 803a5ff1
...@@ -7,6 +7,7 @@ import com.apobates.forum.member.impl.MemberAppConfig; ...@@ -7,6 +7,7 @@ import com.apobates.forum.member.impl.MemberAppConfig;
import com.apobates.forum.thrones.admin.event.ModeratorBornNoticeListener; import com.apobates.forum.thrones.admin.event.ModeratorBornNoticeListener;
import com.apobates.forum.thrones.admin.event.ModeratorRecallNoticeListener; import com.apobates.forum.thrones.admin.event.ModeratorRecallNoticeListener;
import com.apobates.forum.utils.Commons; import com.apobates.forum.utils.Commons;
import java.time.Duration;
import javax.persistence.EntityManagerFactory; import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource; import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -17,9 +18,11 @@ import org.springframework.context.annotation.EnableLoadTimeWeaving; ...@@ -17,9 +18,11 @@ import org.springframework.context.annotation.EnableLoadTimeWeaving;
import org.springframework.context.annotation.Import; import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.PropertySource; import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration; import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.orm.jpa.JpaTransactionManager; import org.springframework.orm.jpa.JpaTransactionManager;
...@@ -28,6 +31,7 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean; ...@@ -28,6 +31,7 @@ import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.orm.jpa.vendor.Database; import org.springframework.orm.jpa.vendor.Database;
import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter; import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
import redis.clients.jedis.JedisPoolConfig;
/** /**
* 后端Spring framework配置类 * 后端Spring framework配置类
...@@ -128,10 +132,24 @@ public class ThronesAdminAppConfig { ...@@ -128,10 +132,24 @@ public class ThronesAdminAppConfig {
int redisPort = Commons.stringToInteger(()->env.getProperty("cache.redis.port"), 6379); int redisPort = Commons.stringToInteger(()->env.getProperty("cache.redis.port"), 6379);
String redisPassword = env.getProperty("cache.redis.password"); String redisPassword = env.getProperty("cache.redis.password");
int redisDatabase = Commons.stringToInteger(()->env.getProperty("cache.redis.database"), 0); int redisDatabase = Commons.stringToInteger(()->env.getProperty("cache.redis.database"), 0);
long redisTimeout = Commons.stringToLong(()->env.getProperty("cache.redis.timeout"), 60L);
RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration(redisHost, redisPort); RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration(redisHost, redisPort);
redisConfig.setPassword(redisPassword); redisConfig.setPassword(redisPassword);
redisConfig.setDatabase(redisDatabase); redisConfig.setDatabase(redisDatabase);
return new JedisConnectionFactory(redisConfig); //pool
JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(100);
jedisPoolConfig.setMinIdle(10);
jedisPoolConfig.setMaxTotal(1000);
jedisPoolConfig.setMaxWaitMillis(1000L);
JedisClientConfiguration clientConfig = JedisClientConfiguration.builder()
.connectTimeout(Duration.ofSeconds(redisTimeout))
.readTimeout(Duration.ofSeconds(redisTimeout))
.usePooling()
.poolConfig(jedisPoolConfig)
.build();
return new JedisConnectionFactory(redisConfig, clientConfig);
} }
@Bean @Bean
...@@ -142,7 +160,8 @@ public class ThronesAdminAppConfig { ...@@ -142,7 +160,8 @@ public class ThronesAdminAppConfig {
} }
@Bean @Bean
public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) { public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
return RedisCacheManager.create(connectionFactory); RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofDays(1)).disableCachingNullValues();
return RedisCacheManager.builder(connectionFactory).cacheDefaults(config).build();
} }
//CORE事件侦听器 //CORE事件侦听器
@Bean @Bean
......
...@@ -53,4 +53,5 @@ jpa.batch.size=1000 ...@@ -53,4 +53,5 @@ jpa.batch.size=1000
cache.redis.host=127.0.0.1 cache.redis.host=127.0.0.1
cache.redis.port=6379 cache.redis.port=6379
cache.redis.password=jedisroot cache.redis.password=jedisroot
cache.redis.database=1 cache.redis.database=1
\ No newline at end of file cache.redis.timeout=60
\ No newline at end of file
...@@ -36,7 +36,6 @@ import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter; ...@@ -36,7 +36,6 @@ import org.springframework.orm.jpa.vendor.EclipseLinkJpaVendorAdapter;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
import java.time.Duration; import java.time.Duration;
import org.springframework.data.redis.connection.jedis.JedisClientConfiguration; import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;
import org.springframework.data.redis.connection.jedis.JedisClientConfiguration.JedisClientConfigurationBuilder;
import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.JedisPoolConfig;
/** /**
* Spring framework配置类 * Spring framework配置类
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册