Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
L
loginservice
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lanmw
loginservice
Commits
238fdc6f
Commit
238fdc6f
authored
Jul 01, 2019
by
laigx
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Upload New File
parent
231ca999
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
142 additions
and
0 deletions
+142
-0
RedisClusterConfig.java
...ain/java/com/keymobile/proxy/conf/RedisClusterConfig.java
+142
-0
No files found.
src/main/java/com/keymobile/proxy/conf/RedisClusterConfig.java
0 → 100644
View file @
238fdc6f
package
com
.
keymobile
.
auth
.
conf
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.connection.RedisClusterConfiguration
;
import
org.springframework.data.redis.connection.RedisNode
;
import
org.springframework.data.redis.connection.RedisPassword
;
import
org.springframework.data.redis.connection.jedis.JedisConnectionFactory
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.serializer.JdkSerializationRedisSerializer
;
import
org.springframework.data.redis.serializer.StringRedisSerializer
;
import
org.springframework.session.data.redis.config.ConfigureRedisAction
;
import
org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession
;
import
redis.clients.jedis.JedisPoolConfig
;
import
java.util.HashSet
;
import
java.util.Set
;
/**
* Created by Administrator on 2019/2/28.
*/
@EnableRedisHttpSession
@Configuration
public
class
RedisClusterConfig
{
@Value
(
"${spring.redis.cluster.nodes}"
)
private
String
clusterNodes
;
@Value
(
"${spring.redis.cluster.max-redirects}"
)
private
int
maxRedirects
;
@Value
(
"${spring.redis.password}"
)
private
String
password
;
@Value
(
"${spring.redis.timeout}"
)
private
int
timeout
;
@Value
(
"${spring.redis.maxIdle}"
)
private
int
maxIdle
;
@Value
(
"${spring.redis.maxTotal}"
)
private
int
maxTotal
;
@Value
(
"${spring.redis.maxWaitMillis}"
)
private
int
maxWaitMillis
;
@Value
(
"${spring.redis.minEvictableIdleTimeMillis}"
)
private
int
minEvictableIdleTimeMillis
;
@Value
(
"${spring.redis.numTestsPerEvictionRun}"
)
private
int
numTestsPerEvictionRun
;
@Value
(
"${spring.redis.timeBetweenEvictionRunsMillis}"
)
private
int
timeBetweenEvictionRunsMillis
;
@Value
(
"${spring.redis.testOnBorrow}"
)
private
boolean
testOnBorrow
;
@Value
(
"${spring.redis.testWhileIdle}"
)
private
boolean
testWhileIdle
;
@Bean
public
JedisPoolConfig
getJedisPoolConfig
()
{
JedisPoolConfig
jedisPoolConfig
=
new
JedisPoolConfig
();
// 最大空闲数
jedisPoolConfig
.
setMaxIdle
(
maxIdle
);
// 连接池的最大数据库连接数
jedisPoolConfig
.
setMaxTotal
(
maxTotal
);
// 最大建立连接等待时间
jedisPoolConfig
.
setMaxWaitMillis
(
maxWaitMillis
);
// 逐出连接的最小空闲时间 默认1800000毫秒(30分钟)
jedisPoolConfig
.
setMinEvictableIdleTimeMillis
(
minEvictableIdleTimeMillis
);
// 每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3
jedisPoolConfig
.
setNumTestsPerEvictionRun
(
numTestsPerEvictionRun
);
// 逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
jedisPoolConfig
.
setTimeBetweenEvictionRunsMillis
(
timeBetweenEvictionRunsMillis
);
// 是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
jedisPoolConfig
.
setTestOnBorrow
(
testOnBorrow
);
// 在空闲时检查有效性, 默认false
jedisPoolConfig
.
setTestWhileIdle
(
testWhileIdle
);
return
jedisPoolConfig
;
}
/**
* Redis集群的配置
* @return RedisClusterConfiguration
* @throws
*/
@Bean
public
RedisClusterConfiguration
redisClusterConfiguration
(){
RedisClusterConfiguration
redisClusterConfiguration
=
new
RedisClusterConfiguration
();
//Set<RedisNode> clusterNodes
String
[]
serverArray
=
clusterNodes
.
split
(
","
);
Set
<
RedisNode
>
nodes
=
new
HashSet
<
RedisNode
>();
for
(
String
ipPort:
serverArray
){
String
[]
ipAndPort
=
ipPort
.
split
(
":"
);
nodes
.
add
(
new
RedisNode
(
ipAndPort
[
0
].
trim
(),
Integer
.
valueOf
(
ipAndPort
[
1
])));
}
redisClusterConfiguration
.
setClusterNodes
(
nodes
);
redisClusterConfiguration
.
setMaxRedirects
(
maxRedirects
);
redisClusterConfiguration
.
setPassword
(
RedisPassword
.
of
(
password
));
return
redisClusterConfiguration
;
}
/**
* @param
* @return
* @Description:redis连接工厂类
* @date 2018/10/25 19:45
*/
@Bean
public
JedisConnectionFactory
jedisConnectionFactory
()
{
//集群模式
JedisConnectionFactory
factory
=
new
JedisConnectionFactory
(
redisClusterConfiguration
(),
getJedisPoolConfig
());
factory
.
setDatabase
(
0
);
factory
.
setTimeout
(
timeout
);
factory
.
setUsePool
(
true
);
return
factory
;
}
/**
* 实例化 RedisTemplate 对象
*
* @return
*/
@Bean
public
RedisTemplate
<
String
,
Object
>
redisTemplate
()
{
RedisTemplate
<
String
,
Object
>
redisTemplate
=
new
RedisTemplate
<>();
initDomainRedisTemplate
(
redisTemplate
);
return
redisTemplate
;
}
/**
* 设置数据存入 redis 的序列化方式,并开启事务
* 使用默认的序列化会导致key乱码
*
*/
private
void
initDomainRedisTemplate
(
RedisTemplate
<
String
,
Object
>
redisTemplate
)
{
//如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to String!
redisTemplate
.
setKeySerializer
(
new
StringRedisSerializer
());
//这个地方有一个问题,这种序列化器会将value序列化成对象存储进redis中,如果
//你想取出value,然后进行自增的话,这种序列化器是不可以的,因为对象不能自增;
//需要改成StringRedisSerializer序列化器。
redisTemplate
.
setValueSerializer
(
new
JdkSerializationRedisSerializer
());
redisTemplate
.
setEnableTransactionSupport
(
false
);
redisTemplate
.
setConnectionFactory
(
jedisConnectionFactory
());
}
@Bean
public
static
ConfigureRedisAction
configureRedisAction
(){
return
ConfigureRedisAction
.
NO_OP
;
}
}
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