@ -5,18 +5,16 @@ import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper ;
import com.nmgs.util.LogUtil ;
import com.nmgs.util.PropertiesUtil ;
import org.springframework.beans.factory.annotation.Value ;
import org.springframework.boot.context.properties.ConfigurationProperties ;
import org.springframework.cache.annotation.CachingConfigurerSupport ;
import org.springframework.cache.annotation.EnableCaching ;
import org.springframework.context.annotation.Bean ;
import org.springframework.context.annotation.Configuration ;
import org.springframework.data.redis.connection.RedisConnectionFactory ;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration ;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory ;
import org.springframework.data.redis.connection.RedisNode ;
import org.springframework.data.redis.connection.RedisSentinelConfiguration ;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory ;
import org.springframework.data.redis.core.RedisTemplate ;
import org.springframework.data.redis.listener.PatternTopic ;
import org.springframework.data.redis.listener.RedisMessageListenerContainer ;
import org.springframework.data.redis.listener.adapter.MessageListenerAdapter ;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer ;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer ;
import org.springframework.data.redis.serializer.StringRedisSerializer ;
import org.springframework.stereotype.Component ;
@ -24,7 +22,12 @@ import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool ;
import redis.clients.jedis.JedisPoolConfig ;
import java.util.Map ;
import java.util.Arrays ;
import java.util.HashSet ;
import java.util.List ;
import java.util.Set ;
import static com.nmgs.util.WebServiceUtil.logger ;
@Component
@EnableCaching
@ -41,23 +44,74 @@ public class RedisSessionConfig extends CachingConfigurerSupport {
timeout = Integer . parseInt ( PropertiesUtil . getValue ( "redis.timeout" ) ) ;
}
// 配置Redis连接工厂
@Bean
/ * @Bean
public RedisConnectionFactory redisConnectionFactory ( ) {
// 创建Redis的单机配置
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration ( host , port ) ;
config . setPassword ( password ) ;
// 返回Lettuce连接工厂
return new LettuceConnectionFactory ( config ) ;
} * /
private static List < String > nodes = Arrays . asList ( PropertiesUtil . getValue ( "redis.sentinel.nodes" ) . split ( "," ) ) ;
@Bean
public JedisPoolConfig getRedisConfig ( ) {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig ( ) ;
// 最大空闲数
jedisPoolConfig . setMaxIdle ( 1000 ) ;
// 连接池的最大数据库连接数
jedisPoolConfig . setMaxTotal ( 100000 ) ;
// 最大建立连接等待时间
jedisPoolConfig . setMaxWaitMillis ( 5 * 1000 ) ;
// 逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
jedisPoolConfig . setMinEvictableIdleTimeMillis ( 1800000 ) ;
// 每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
jedisPoolConfig . setNumTestsPerEvictionRun ( 3 ) ;
// 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
jedisPoolConfig . setTimeBetweenEvictionRunsMillis ( - 1 ) ;
// 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
jedisPoolConfig . setTestOnBorrow ( true ) ;
// 在空闲时检查有效性, 默认false
jedisPoolConfig . setTestWhileIdle ( false ) ;
return jedisPoolConfig ;
}
@Bean
public static RedisSentinelConfiguration sentinelConfiguration ( ) {
RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration ( ) ;
//配置matser的名称
redisSentinelConfiguration . master ( "mymaster" ) ;
//配置redis的哨兵sentinel
Set < RedisNode > redisNodeSet = new HashSet < > ( ) ;
nodes . forEach ( x - > {
redisNodeSet . add ( new RedisNode ( x . split ( ":" ) [ 0 ] , Integer . parseInt ( x . split ( ":" ) [ 1 ] ) ) ) ;
} ) ;
System . out . println ( "redisNodeSet -->" + redisNodeSet ) ;
redisSentinelConfiguration . setSentinels ( redisNodeSet ) ;
redisSentinelConfiguration . setPassword ( "nmgjtjt" ) ;
return redisSentinelConfiguration ;
}
@Bean
public JedisConnectionFactory jedisConnectionFactory ( JedisPoolConfig jedisPoolConfig , RedisSentinelConfiguration sentinelConfig ) {
JedisConnectionFactory jedisConnectionFactory = null ;
try {
jedisConnectionFactory = new JedisConnectionFactory ( sentinelConfig , jedisPoolConfig ) ;
} catch ( Exception e ) {
e . printStackTrace ( ) ;
}
return jedisConnectionFactory ;
}
// 配置RedisTemplate
@Bean
public RedisTemplate < String , Object > redisTemplate ( RedisConnectionFactory connectionFactory ) {
public RedisTemplate < String , Object > redisTemplate ( J edisConnectionFactory connectionFactory ) {
// 创建RedisTemplate实例
RedisTemplate < String , Object > template = new RedisTemplate < > ( ) ;
template . setConnectionFactory ( connectionFactory ) ;
Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer ( Object . class ) ;
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer ( ) ;
ObjectMapper om = new ObjectMapper ( ) ;
@ -74,24 +128,26 @@ public class RedisSessionConfig extends CachingConfigurerSupport {
}
@Bean
RedisMessageListenerContainer container ( R edisConnectionFactory connectionFactory ) {
RedisMessageListenerContainer container ( J edisConnectionFactory connectionFactory ) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer ( ) ;
container . setConnectionFactory ( connectionFactory ) ;
return container ;
}
public static Jedis jedisResource ( ) {
try {
try {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig ( ) ;
jedisPoolConfig . setMaxTotal ( 10000 ) ; //最大连接数
jedisPoolConfig . setMaxIdle ( 1000 ) ; //最大空闲数
JedisPool jedisPool = new JedisPool ( jedisPoolConfig , host , port , timeout , "nmgjtjt" ) ;
JedisPool jedisPool = new JedisPool ( jedisPoolConfig , host , port , timeout , "nmgjtjt" ) ;
Jedis resource = jedisPool . getResource ( ) ;
resource . auth ( "nmgjtjt" ) ;
return resource ;
} catch ( Exception e ) {
LogUtil . WriteLog_Error ( "redis连接出错了======" + e . getMessage ( ) , "redisConfigUtil" ) ;
} catch ( Exception e ) {
LogUtil . WriteLog_Error ( "redis连接出错了======" + e . getMessage ( ) , "redisConfigUtil" ) ;
return null ;
}
}
}