Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cash-loan-flow-boss
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
QG
cash-loan-flow-boss
Commits
57d33ef3
Commit
57d33ef3
authored
Aug 05, 2019
by
xiaozhe.chen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
添加多数据源和配置中心
parent
e2bfb663
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
186 additions
and
0 deletions
+186
-0
RedisConfig.java
...cashloanflowboss/core/configuration/data/RedisConfig.java
+186
-0
No files found.
src/main/java/cn/quantgroup/cashloanflowboss/core/configuration/data/RedisConfig.java
0 → 100644
View file @
57d33ef3
package
cn
.
quantgroup
.
cashloanflowboss
.
core
.
configuration
.
data
;
import
com.fasterxml.jackson.annotation.JsonAutoDetect
;
import
com.fasterxml.jackson.annotation.PropertyAccessor
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.cache.CacheManager
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.cache.RedisCacheManager
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
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.serializer.Jackson2JsonRedisSerializer
;
import
org.springframework.data.redis.serializer.JdkSerializationRedisSerializer
;
import
org.springframework.data.redis.serializer.StringRedisSerializer
;
import
redis.clients.jedis.JedisPoolConfig
;
import
java.util.HashSet
;
import
java.util.Set
;
@Configuration
@Slf4j
public
class
RedisConfig
{
@Value
(
"${data.redis.defaultExpiration}"
)
private
Long
defaultExpiration
;
@Value
(
"${redis.master.host}"
)
private
String
masterHost
;
@Value
(
"${redis.master.port}"
)
private
int
masterPort
;
@Value
(
"${redis.master.name}"
)
private
String
masterName
;
@Value
(
"${redis.sentinel1.host}"
)
private
String
sentinel1Host
;
@Value
(
"${redis.sentinel1.port}"
)
private
int
sentinel1port
;
@Value
(
"${redis.sentinel2.host}"
)
private
String
sentinel2Host
;
@Value
(
"${redis.sentinel2.port}"
)
private
int
sentinel2port
;
@Value
(
"${redis.sentinel3.host}"
)
private
String
sentinel3Host
;
@Value
(
"${redis.sentinel3.port}"
)
private
int
sentinel3port
;
private
RedisConnectionFactory
generateDevConnectionFactory
()
{
JedisConnectionFactory
factory
=
new
JedisConnectionFactory
();
factory
.
setHostName
(
masterHost
);
factory
.
setPort
(
masterPort
);
factory
.
setUsePool
(
true
);
factory
.
setConvertPipelineAndTxResults
(
true
);
JedisPoolConfig
poolConfig
=
generatePoolConfig
();
factory
.
setPoolConfig
(
poolConfig
);
factory
.
setTimeout
(
5000
);
factory
.
afterPropertiesSet
();
return
factory
;
}
private
RedisConnectionFactory
generateReleaseConnectionFactory
()
{
RedisSentinelConfiguration
sentinelConfiguration
=
new
RedisSentinelConfiguration
();
RedisNode
master
=
new
RedisNode
(
masterHost
,
masterPort
);
master
.
setName
(
masterName
);
Set
<
RedisNode
>
sentinels
=
new
HashSet
<>();
RedisNode
sentinel1
=
new
RedisNode
(
sentinel1Host
,
sentinel1port
);
RedisNode
sentinel2
=
new
RedisNode
(
sentinel2Host
,
sentinel2port
);
RedisNode
sentinel3
=
new
RedisNode
(
sentinel3Host
,
sentinel3port
);
sentinels
.
add
(
sentinel1
);
sentinels
.
add
(
sentinel2
);
sentinels
.
add
(
sentinel3
);
sentinelConfiguration
.
setMaster
(
master
);
sentinelConfiguration
.
setSentinels
(
sentinels
);
JedisPoolConfig
poolConfig
=
generatePoolConfig
();
JedisConnectionFactory
factory
=
new
JedisConnectionFactory
(
sentinelConfiguration
,
poolConfig
);
factory
.
setHostName
(
masterHost
);
factory
.
setPort
(
masterPort
);
factory
.
setTimeout
(
10000
);
factory
.
setUsePool
(
true
);
factory
.
setConvertPipelineAndTxResults
(
true
);
factory
.
afterPropertiesSet
();
return
factory
;
}
@Bean
(
name
=
"redisTemplate"
)
public
RedisTemplate
<
String
,
Object
>
redisTemplate
(
RedisConnectionFactory
redisConnectionFactory
)
{
final
RedisTemplate
<
String
,
Object
>
template
=
new
RedisTemplate
<>();
StringRedisSerializer
stringRedisSerializer
=
new
StringRedisSerializer
();
JdkSerializationRedisSerializer
jdkSerializationRedisSerializer
=
new
JdkSerializationRedisSerializer
();
template
.
setEnableTransactionSupport
(
false
);
template
.
setKeySerializer
(
stringRedisSerializer
);
template
.
setHashKeySerializer
(
stringRedisSerializer
);
template
.
setValueSerializer
(
jdkSerializationRedisSerializer
);
template
.
setHashValueSerializer
(
jdkSerializationRedisSerializer
);
template
.
setDefaultSerializer
(
jdkSerializationRedisSerializer
);
template
.
setConnectionFactory
(
redisConnectionFactory
);
return
template
;
}
@Bean
(
name
=
"stringRedisTemplate"
)
public
RedisTemplate
<
String
,
String
>
stringRedisTemplate
(
RedisConnectionFactory
redisConnectionFactory
)
{
final
RedisTemplate
<
String
,
String
>
template
=
new
RedisTemplate
<>();
StringRedisSerializer
stringRedisSerializer
=
new
StringRedisSerializer
();
template
.
setEnableTransactionSupport
(
false
);
template
.
setKeySerializer
(
stringRedisSerializer
);
template
.
setHashKeySerializer
(
stringRedisSerializer
);
template
.
setValueSerializer
(
stringRedisSerializer
);
template
.
setDefaultSerializer
(
stringRedisSerializer
);
template
.
setConnectionFactory
(
redisConnectionFactory
);
return
template
;
}
@Bean
(
name
=
"stringLongRedisTemplate"
)
public
RedisTemplate
<
String
,
Long
>
stringLongRedisTemplate
(
RedisConnectionFactory
redisConnectionFactory
)
{
final
RedisTemplate
<
String
,
Long
>
template
=
new
RedisTemplate
<>();
StringRedisSerializer
stringRedisSerializer
=
new
StringRedisSerializer
();
template
.
setEnableTransactionSupport
(
false
);
template
.
setKeySerializer
(
stringRedisSerializer
);
template
.
setHashKeySerializer
(
stringRedisSerializer
);
template
.
setValueSerializer
(
stringRedisSerializer
);
template
.
setDefaultSerializer
(
stringRedisSerializer
);
template
.
setConnectionFactory
(
redisConnectionFactory
);
return
template
;
}
@Bean
(
name
=
"jsonRedisTemplate"
)
public
RedisTemplate
<
String
,
Object
>
hashRedisTemplate
(
RedisConnectionFactory
redisConnectionFactory
)
{
final
RedisTemplate
<
String
,
Object
>
template
=
new
RedisTemplate
<>();
StringRedisSerializer
stringRedisSerializer
=
new
StringRedisSerializer
();
JdkSerializationRedisSerializer
jdkSerializationRedisSerializer
=
new
JdkSerializationRedisSerializer
();
Jackson2JsonRedisSerializer
jackson2JsonRedisSerializer
=
new
Jackson2JsonRedisSerializer
(
Object
.
class
);
ObjectMapper
om
=
new
ObjectMapper
();
om
.
setVisibility
(
PropertyAccessor
.
ALL
,
JsonAutoDetect
.
Visibility
.
ANY
);
om
.
enableDefaultTyping
(
ObjectMapper
.
DefaultTyping
.
NON_FINAL
);
jackson2JsonRedisSerializer
.
setObjectMapper
(
om
);
template
.
setEnableTransactionSupport
(
false
);
template
.
setKeySerializer
(
stringRedisSerializer
);
template
.
setValueSerializer
(
jackson2JsonRedisSerializer
);
template
.
setHashKeySerializer
(
stringRedisSerializer
);
template
.
setHashValueSerializer
(
jackson2JsonRedisSerializer
);
template
.
setValueSerializer
(
jackson2JsonRedisSerializer
);
template
.
setDefaultSerializer
(
jdkSerializationRedisSerializer
);
template
.
setConnectionFactory
(
redisConnectionFactory
);
return
template
;
}
@Bean
(
name
=
"redisConnectionFactory"
)
public
RedisConnectionFactory
factory
()
{
if
(
StringUtils
.
isEmpty
(
masterName
))
{
return
generateDevConnectionFactory
();
}
else
{
return
generateReleaseConnectionFactory
();
}
}
private
JedisPoolConfig
generatePoolConfig
()
{
JedisPoolConfig
poolConfig
=
new
JedisPoolConfig
();
poolConfig
.
setMinIdle
(
10
);
poolConfig
.
setMaxTotal
(
500
);
poolConfig
.
setMaxWaitMillis
(
5000
);
poolConfig
.
setTestOnBorrow
(
true
);
return
poolConfig
;
}
@Bean
(
name
=
"cacheManager"
)
public
CacheManager
cacheManager
(
RedisTemplate
<
String
,
Object
>
redisTemplate
)
{
RedisCacheManager
redisCacheManager
=
new
RedisCacheManager
(
redisTemplate
);
redisCacheManager
.
setDefaultExpiration
(
defaultExpiration
);
redisCacheManager
.
setUsePrefix
(
true
);
redisCacheManager
.
setTransactionAware
(
true
);
return
redisCacheManager
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment