Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
midjourney-proxy
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
徐少华
midjourney-proxy
Commits
231ca56e
Commit
231ca56e
authored
Mar 08, 2022
by
李传峰
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat:[none] 调整jedis初始化结构,便于一个项目可以接入多个redis
parent
daee8c67
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
260 additions
and
130 deletions
+260
-130
JedisClusterBeanBuilder.java
...oud/common/utils/cache/redis/JedisClusterBeanBuilder.java
+103
-0
JedisClusterConfig.java
...m/pcloud/common/utils/cache/redis/JedisClusterConfig.java
+21
-110
JedisClusterPoolProperties.java
.../common/utils/cache/redis/JedisClusterPoolProperties.java
+68
-0
JedisClusterProperties.java
...loud/common/utils/cache/redis/JedisClusterProperties.java
+58
-0
JedisClusterUtils.java
...om/pcloud/common/utils/cache/redis/JedisClusterUtils.java
+10
-20
No files found.
pcloud-common/src/main/java/com/pcloud/common/utils/cache/redis/JedisClusterBeanBuilder.java
0 → 100644
View file @
231ca56e
package
com
.
pcloud
.
common
.
utils
.
cache
.
redis
;
import
com.pcloud.common.utils.json.JSONUtils
;
import
com.pcloud.common.utils.string.StringUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.pool2.impl.GenericObjectPoolConfig
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
redis.clients.jedis.HostAndPort
;
import
redis.clients.jedis.JedisCluster
;
import
java.util.HashSet
;
import
java.util.Set
;
import
java.util.regex.Pattern
;
/**
*
* @描述:redis集群初始化
* @作者:songx
* @创建时间:2017年9月13日,下午5:50:17
* @版本:1.0
*/
public
class
JedisClusterBeanBuilder
{
/**
*
*/
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
JedisClusterBeanBuilder
.
class
);
/**
* 正则校验IP
*/
private
static
final
Pattern
p
=
Pattern
.
compile
(
"^.+[:]\\d{1,5}\\s*$"
);
/**
* Jedis连接池
*
* @return
*/
public
static
GenericObjectPoolConfig
<?>
createJedisPoolConfig
(
JedisClusterProperties
properties
)
{
LOGGER
.
info
(
"jedis pool config initialize..."
);
GenericObjectPoolConfig
<?>
poolConfig
=
new
GenericObjectPoolConfig
<>();
poolConfig
.
setMaxTotal
(
properties
.
getPool
().
getMaxTotal
());
poolConfig
.
setMinIdle
(
properties
.
getPool
().
getMinIdle
());
poolConfig
.
setMaxIdle
(
properties
.
getPool
().
getMaxIdle
());
poolConfig
.
setMaxWaitMillis
(
properties
.
getPool
().
getMaxWaitMillis
());
poolConfig
.
setTimeBetweenEvictionRunsMillis
(
properties
.
getPool
().
getTimeBetweenEvictionRunsMillis
());
poolConfig
.
setTestOnBorrow
(
properties
.
getPool
().
isTestOnBorrow
());
LOGGER
.
info
(
"jedis pool config initialize,properties={}"
,
JSONUtils
.
toJsonString
(
properties
));
return
poolConfig
;
}
/**
* JedisCluster
*/
public
static
JedisCluster
createJedisCluster
(
JedisClusterProperties
properties
,
GenericObjectPoolConfig
<?>
config
)
{
LOGGER
.
info
(
"JedisCluster create start,{},=>{}<=]"
,
properties
.
getTimeout
(),
properties
.
getPassword
());
try
{
JedisCluster
jc
=
new
JedisCluster
(
parseHostAndPort
(
properties
.
getHost
()),
properties
.
getTimeout
(),
properties
.
getTimeout
(),
properties
.
getMaxRedirections
(),
StringUtils
.
trimToNull
(
properties
.
getPassword
()),
config
);
LOGGER
.
info
(
"JedisCluster create completed,echo={}"
,
jc
.
echo
(
"Echo Successfully."
));
return
jc
;
}
catch
(
Exception
e
)
{
LOGGER
.
info
(
"JedisCluster create without password,{},=>{}<=],message={}"
,
properties
.
getTimeout
(),
properties
.
getPassword
(),
e
.
getMessage
());
JedisCluster
jc
=
new
JedisCluster
(
parseHostAndPort
(
properties
.
getHost
()),
properties
.
getTimeout
(),
properties
.
getMaxRedirections
(),
config
);
LOGGER
.
info
(
"JedisCluster create without password,echo={}"
,
jc
.
echo
(
"Echo Successfully."
));
return
jc
;
}
}
/**
* 组装节点IP
*
* @return
*/
private
static
Set
<
HostAndPort
>
parseHostAndPort
(
final
String
host
)
{
LOGGER
.
info
(
"JedisCluster connect nodes {}"
,
host
);
Set
<
HostAndPort
>
hostAndPorts
=
new
HashSet
<>();
if
(
StringUtil
.
isEmpty
(
host
))
{
throw
new
IllegalArgumentException
(
"解析 jedis配置文件 -> 节点IP不能为空"
);
}
String
[]
hosts
=
host
.
split
(
","
);
for
(
int
i
=
0
;
i
<
hosts
.
length
;
i
++)
{
String
value
=
hosts
[
i
];
boolean
isIpPort
=
p
.
matcher
(
value
).
matches
();
if
(!
isIpPort
)
{
throw
new
IllegalArgumentException
(
"解析 jedis配置文件 -> ip或 port不合法"
);
}
String
[]
ipAndPort
=
value
.
split
(
":"
);
hostAndPorts
.
add
(
new
HostAndPort
(
ipAndPort
[
0
].
trim
(),
Integer
.
parseInt
(
ipAndPort
[
1
].
trim
())));
}
return
hostAndPorts
;
}
}
pcloud-common/src/main/java/com/pcloud/common/utils/cache/redis/JedisClusterConfig.java
View file @
231ca56e
package
com
.
pcloud
.
common
.
utils
.
cache
.
redis
;
package
com
.
pcloud
.
common
.
utils
.
cache
.
redis
;
import
com.pcloud.common.utils.string.StringUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.pool2.impl.GenericObjectPoolConfig
;
import
org.apache.commons.pool2.impl.GenericObjectPoolConfig
;
import
org.slf4j.Logger
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.cache.annotation.EnableCaching
;
import
org.springframework.cache.annotation.EnableCaching
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
redis.clients.jedis.HostAndPort
;
import
org.springframework.context.annotation.Primary
;
import
redis.clients.jedis.JedisCluster
;
import
redis.clients.jedis.JedisCluster
;
import
java.util.HashSet
;
import
java.util.Set
;
import
java.util.regex.Pattern
;
/**
/**
*
*
* @描述:redis集群初始化
* @作者:songx
* @创建时间:2017年9月13日,下午5:50:17
* @版本:1.0
*/
*/
@Configuration
@Configuration
@EnableCaching
@EnableCaching
public
class
JedisClusterConfig
{
public
class
JedisClusterConfig
{
/**
public
static
final
String
PROPERTIES_NAME
=
"defaultJedisClusterProperties"
;
*
public
static
final
String
JEDIS_CLUSTER_NAME
=
"defaultJedisCluster"
;
*/
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
JedisClusterConfig
.
class
);
@Value
(
"${redis.cluster.host}"
)
private
String
host
;
@Value
(
"${redis.cluster.password}"
)
private
String
password
;
@Value
(
"${redis.cluster.timeout}"
)
private
int
timeout
;
@Value
(
"${redis.cluster.maxRedirections}"
)
private
int
maxRedirections
;
@Value
(
"${redis.cluster.pool.maxTotal}"
)
private
int
maxTotal
;
@Value
(
"${redis.cluster.pool.minIdle}"
)
private
int
minIdle
;
@Value
(
"${redis.cluster.pool.maxIdle}"
)
private
int
maxIdle
;
@Value
(
"${redis.cluster.pool.maxWaitMillis}"
)
private
int
maxWaitMillis
;
@Value
(
"${redis.cluster.pool.timeBetweenEvictionRunsMillis}"
)
private
int
timeBetweenEvictionRunsMillis
;
@Value
(
"${redis.cluster.pool.testOnBorrow}"
)
private
boolean
testOnBorrow
;
/**
@Bean
(
PROPERTIES_NAME
)
* 正则校验IP
@Primary
*/
@ConfigurationProperties
(
prefix
=
"redis.cluster"
)
private
Pattern
p
=
Pattern
.
compile
(
"^.+[:]\\d{1,5}\\s*$"
);
public
JedisClusterProperties
defaultJedisClusterProperties
()
{
return
new
JedisClusterProperties
();
/**
* Jedis连接池
*
* @return
*/
@Bean
public
GenericObjectPoolConfig
jedisPoolConfig
()
{
LOGGER
.
info
(
"【redis】JedisPool注入成功,<START>"
);
GenericObjectPoolConfig
poolConfig
=
new
GenericObjectPoolConfig
();
poolConfig
.
setMaxTotal
(
maxTotal
);
poolConfig
.
setMinIdle
(
minIdle
);
poolConfig
.
setMaxIdle
(
maxIdle
);
poolConfig
.
setMaxWaitMillis
(
maxWaitMillis
);
poolConfig
.
setTimeBetweenEvictionRunsMillis
(
timeBetweenEvictionRunsMillis
);
poolConfig
.
setTestOnBorrow
(
testOnBorrow
);
return
poolConfig
;
}
}
/**
/**
* JedisCluster
* JedisCluster
*/
*/
@Bean
@Bean
(
JEDIS_CLUSTER_NAME
)
public
JedisCluster
JedisClusterFactory
()
{
@Primary
LOGGER
.
info
(
"【redis】JedisCluster创建,{},=>{}<=]"
,
timeout
,
password
);
public
JedisCluster
jedisCluster
(
@Qualifier
(
PROPERTIES_NAME
)
JedisClusterProperties
properties
)
{
try
{
GenericObjectPoolConfig
<?>
config
=
JedisClusterBeanBuilder
.
createJedisPoolConfig
(
properties
);
JedisCluster
jc
=
new
JedisCluster
(
parseHostAndPort
(),
timeout
,
timeout
,
maxRedirections
,
StringUtils
.
trimToNull
(
password
),
jedisPoolConfig
());
LOGGER
.
info
(
"【redis】JedisCluster创建,echo={}"
,
jc
.
echo
(
"Echo Successfully."
));
return
jc
;
}
catch
(
Exception
e
)
{
LOGGER
.
info
(
"【redis】JedisCluster创建无密重试,{},=>{}<=],message={}"
,
timeout
,
password
,
e
.
getMessage
());
JedisCluster
jc
=
new
JedisCluster
(
parseHostAndPort
(),
timeout
,
maxRedirections
,
jedisPoolConfig
()
);
JedisCluster
cluster
=
JedisClusterBeanBuilder
.
createJedisCluster
(
properties
,
config
);
LOGGER
.
info
(
"【redis】JedisCluster创建无密重试,echo={}"
,
jc
.
echo
(
"Echo Successfully."
));
/*
return
jc
;
* Important,若是copy,这里请注意是否需要设置
}
*/
JedisClusterUtils
.
initJedisCluster
(
cluster
);
}
return
cluster
;
/**
* 组装节点IP
*
* @return
*/
private
Set
<
HostAndPort
>
parseHostAndPort
()
{
LOGGER
.
info
(
"【redis】节点IP解析,<START>"
);
Set
<
HostAndPort
>
hostAndPorts
=
new
HashSet
<
HostAndPort
>();
if
(
StringUtil
.
isEmpty
(
host
))
{
throw
new
IllegalArgumentException
(
"解析 jedis配置文件 -> 节点IP不能为空"
);
}
String
[]
hosts
=
host
.
split
(
","
);
for
(
int
i
=
0
;
i
<
hosts
.
length
;
i
++)
{
String
value
=
hosts
[
i
];
boolean
isIpPort
=
p
.
matcher
(
value
).
matches
();
if
(!
isIpPort
)
{
throw
new
IllegalArgumentException
(
"解析 jedis配置文件 -> ip或 port不合法"
);
}
String
[]
ipAndPort
=
value
.
split
(
":"
);
hostAndPorts
.
add
(
new
HostAndPort
(
ipAndPort
[
0
].
trim
(),
Integer
.
parseInt
(
ipAndPort
[
1
].
trim
())));
}
return
hostAndPorts
;
}
}
}
}
pcloud-common/src/main/java/com/pcloud/common/utils/cache/redis/JedisClusterPoolProperties.java
0 → 100644
View file @
231ca56e
package
com
.
pcloud
.
common
.
utils
.
cache
.
redis
;
import
java.io.Serializable
;
public
class
JedisClusterPoolProperties
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
7902154239743365109L
;
private
int
maxTotal
;
private
int
minIdle
;
private
int
maxIdle
;
private
int
maxWaitMillis
;
private
int
timeBetweenEvictionRunsMillis
;
private
boolean
testOnBorrow
;
public
int
getMaxTotal
()
{
return
maxTotal
;
}
public
void
setMaxTotal
(
int
maxTotal
)
{
this
.
maxTotal
=
maxTotal
;
}
public
int
getMinIdle
()
{
return
minIdle
;
}
public
void
setMinIdle
(
int
minIdle
)
{
this
.
minIdle
=
minIdle
;
}
public
int
getMaxIdle
()
{
return
maxIdle
;
}
public
void
setMaxIdle
(
int
maxIdle
)
{
this
.
maxIdle
=
maxIdle
;
}
public
int
getMaxWaitMillis
()
{
return
maxWaitMillis
;
}
public
void
setMaxWaitMillis
(
int
maxWaitMillis
)
{
this
.
maxWaitMillis
=
maxWaitMillis
;
}
public
int
getTimeBetweenEvictionRunsMillis
()
{
return
timeBetweenEvictionRunsMillis
;
}
public
void
setTimeBetweenEvictionRunsMillis
(
int
timeBetweenEvictionRunsMillis
)
{
this
.
timeBetweenEvictionRunsMillis
=
timeBetweenEvictionRunsMillis
;
}
public
boolean
isTestOnBorrow
()
{
return
testOnBorrow
;
}
public
void
setTestOnBorrow
(
boolean
testOnBorrow
)
{
this
.
testOnBorrow
=
testOnBorrow
;
}
}
pcloud-common/src/main/java/com/pcloud/common/utils/cache/redis/JedisClusterProperties.java
0 → 100644
View file @
231ca56e
package
com
.
pcloud
.
common
.
utils
.
cache
.
redis
;
import
java.io.Serializable
;
public
class
JedisClusterProperties
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
3077470762060722520L
;
private
String
host
;
private
String
password
;
private
int
timeout
;
private
int
maxRedirections
;
private
JedisClusterPoolProperties
pool
;
public
String
getHost
()
{
return
host
;
}
public
void
setHost
(
String
host
)
{
this
.
host
=
host
;
}
public
String
getPassword
()
{
return
password
;
}
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
public
int
getTimeout
()
{
return
timeout
;
}
public
void
setTimeout
(
int
timeout
)
{
this
.
timeout
=
timeout
;
}
public
int
getMaxRedirections
()
{
return
maxRedirections
;
}
public
void
setMaxRedirections
(
int
maxRedirections
)
{
this
.
maxRedirections
=
maxRedirections
;
}
public
JedisClusterPoolProperties
getPool
()
{
return
pool
;
}
public
void
setPool
(
JedisClusterPoolProperties
pool
)
{
this
.
pool
=
pool
;
}
}
pcloud-common/src/main/java/com/pcloud/common/utils/cache/redis/JedisClusterUtils.java
View file @
231ca56e
...
@@ -3,35 +3,26 @@
...
@@ -3,35 +3,26 @@
*/
*/
package
com
.
pcloud
.
common
.
utils
.
cache
.
redis
;
package
com
.
pcloud
.
common
.
utils
.
cache
.
redis
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Optional
;
import
java.util.Set
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONArray
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.JSONObject
;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Maps
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.ListUtils
;
import
com.pcloud.common.utils.string.StringUtil
;
import
com.pcloud.common.utils.string.StringUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.CollectionUtils
;
import
redis.clients.jedis.JedisCluster
;
import
redis.clients.jedis.JedisCluster
;
import
redis.clients.jedis.params.SetParams
;
import
redis.clients.jedis.params.SetParams
;
import
java.util.*
;
/**
/**
* @描述:redis集群API
* @描述:redis集群API
* @作者:songx
* @作者:songx
* @创建时间:2017年5月11日,下午4:15:40
* @创建时间:2017年5月11日,下午4:15:40
* @版本:1.0
* @版本:1.0
*/
*/
@Component
(
"jedisClusterUtils"
)
public
class
JedisClusterUtils
{
public
class
JedisClusterUtils
{
/**
/**
...
@@ -46,6 +37,11 @@ public class JedisClusterUtils {
...
@@ -46,6 +37,11 @@ public class JedisClusterUtils {
private
static
JedisCluster
jedisCluster
;
private
static
JedisCluster
jedisCluster
;
public
static
void
initJedisCluster
(
JedisCluster
jedisCluster
)
{
JedisClusterUtils
.
jedisCluster
=
jedisCluster
;
LOGGER
.
warn
(
"JedisClusterUtils inject jedisCluster {}"
,
jedisCluster
);
}
/**
/**
* 保存一个字符串到redis中,长期有效
* 保存一个字符串到redis中,长期有效
*
*
...
@@ -1477,12 +1473,6 @@ public class JedisClusterUtils {
...
@@ -1477,12 +1473,6 @@ public class JedisClusterUtils {
return
result
;
return
result
;
}
}
@Autowired
public
void
setJedisCluster
(
JedisCluster
jedisCluster
)
{
JedisClusterUtils
.
jedisCluster
=
jedisCluster
;
}
/**
/**
* set添加元素进去
* set添加元素进去
*
*
...
...
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