Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
matrix
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
CI / CD
CI / CD
Pipelines
Schedules
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
mall
arch
matrix
Commits
a9b2085d
Commit
a9b2085d
authored
Mar 21, 2020
by
liqiuwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完善redis
parent
46aecfb6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
113 additions
and
91 deletions
+113
-91
RedisHelper.java
matrix-datahelper/matrix-datahelper-redis-core/src/main/java/com/secoo/mall/redis/helper/RedisHelper.java
+56
-58
pom.xml
matrix-datahelper/matrix-datahelper-redis-starter/pom.xml
+5
-0
MatrixeRedisAutoConfiguration.java
matrix-datahelper/matrix-datahelper-redis-starter/src/main/java/com/secoo/mall/mybatis/spring/boot/autoconfigure/MatrixeRedisAutoConfiguration.java
+0
-31
MatrixeRedisAutoConfiguration.java
matrix-datahelper/matrix-datahelper-redis-starter/src/main/java/com/secoo/mall/redis/spring/boot/autoconfigure/MatrixeRedisAutoConfiguration.java
+41
-0
spring.factories
matrix-datahelper/matrix-datahelper-redis-starter/src/main/resources/META-INF/spring.factories
+4
-0
pom.xml
pom.xml
+7
-2
No files found.
matrix-datahelper/matrix-datahelper-redis-core/src/main/java/com/secoo/mall/redis/
template/MatrixRedisTemplate
.java
→
matrix-datahelper/matrix-datahelper-redis-core/src/main/java/com/secoo/mall/redis/
helper/RedisHelper
.java
View file @
a9b2085d
package
com
.
secoo
.
mall
.
redis
.
template
;
package
com
.
secoo
.
mall
.
redis
.
helper
;
import
com.alibaba.fastjson.support.spring.FastJsonRedisSerializer
;
import
com.alibaba.fastjson.support.spring.GenericFastJsonRedisSerializer
;
import
com.secoo.mall.common.util.colletion.CollectionUtil
;
import
com.secoo.mall.common.util.string.StringUtil
;
import
lombok.Data
;
import
org.springframework.dao.DataAccessException
;
import
org.springframework.data.redis.connection.RedisConnection
;
import
org.springframework.data.redis.connection.RedisStringCommands.SetOption
;
...
...
@@ -9,24 +12,38 @@ import org.springframework.data.redis.connection.jedis.JedisClusterConnection;
import
org.springframework.data.redis.core.RedisCallback
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.types.Expiration
;
import
org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer
;
import
org.springframework.data.redis.serializer.RedisSerializer
;
import
org.springframework.data.redis.serializer.StringRedisSerializer
;
import
java.util.*
;
import
java.util.concurrent.TimeUnit
;
public
class
MatrixRedisTemplate
{
/**
* 说明:GenericJackson2JsonRedisSerializer性能没有FastJsonRedisSerializer和Jackson2JsonRedisSerializer性能要好,Jackson2JsonRedisSerializer存在反序列失败的问题.
* GenericJackson2JsonRedisSerializer会将基本类型Type保存到redis,增加redis的使用内存。如果存储的对象的属性缺少了,将反序列化失败
* 推荐使用GenericFastJsonRedisSerializer
*/
@Data
public
class
RedisHelper
{
private
final
String
MUTEX_KEY
=
"mutex"
;
private
final
static
RedisSerializer
DEFAULT_STRING_SERIALIZER
=
new
StringRedisSerializer
();
private
final
static
RedisSerializer
DEFAULT_JSON_SERIALIZER
=
new
GenericFastJsonRedisSerializer
();
private
RedisSerializer
keySerializer
=
DEFAULT_STRING_SERIALIZER
;
private
RedisSerializer
hashKeySerializer
=
DEFAULT_STRING_SERIALIZER
;
private
RedisSerializer
valueSerializer
=
DEFAULT_JSON_SERIALIZER
;
private
RedisSerializer
hashValueSerializer
=
DEFAULT_JSON_SERIALIZER
;
private
RedisTemplate
<
String
,
?>
redisTemplate
;
public
RedisTemplate
<
String
,
?>
getRedisTemplate
()
{
return
redisTemplate
;
}
public
void
setRedisTemplate
(
RedisTemplate
<
String
,
?>
redisTemplate
)
{
public
RedisHelper
(
RedisTemplate
redisTemplate
)
{
this
.
redisTemplate
=
redisTemplate
;
}
private
final
String
MUTEX_KEY
=
"mutex"
;
/**
* 设置失效时间
...
...
@@ -38,6 +55,7 @@ public class MatrixRedisTemplate {
redisTemplate
.
execute
(
new
RedisCallback
<
Object
>()
{
@Override
public
Object
doInRedis
(
RedisConnection
connection
)
throws
DataAccessException
{
connection
.
expire
(
getKeySerializer
().
serialize
(
k
),
seconds
);
return
null
;
}
...
...
@@ -50,8 +68,8 @@ public class MatrixRedisTemplate {
* @author zhangxiaosong
*/
public
<
K
,
V
>
void
set
(
K
k
,
V
v
)
{
final
RedisSerializer
keySeri
=
redisTemplate
.
getKeySerializer
();
final
RedisSerializer
valueSeri
=
redisTemplate
.
getValueSerializer
();
final
RedisSerializer
keySeri
=
getKeySerializer
();
final
RedisSerializer
valueSeri
=
getValueSerializer
();
redisTemplate
.
execute
(
new
RedisCallback
<
Object
>()
{
@Override
public
Object
doInRedis
(
RedisConnection
connection
)
throws
DataAccessException
{
...
...
@@ -67,8 +85,8 @@ public class MatrixRedisTemplate {
* @author zhangxiaosong
*/
public
<
K
,
V
>
Boolean
setnx
(
K
k
,
V
v
)
{
final
RedisSerializer
keySeri
=
redisTemplate
.
getKeySerializer
();
final
RedisSerializer
valueSeri
=
redisTemplate
.
getValueSerializer
();
final
RedisSerializer
keySeri
=
getKeySerializer
();
final
RedisSerializer
valueSeri
=
getValueSerializer
();
return
redisTemplate
.
execute
(
new
RedisCallback
<
Boolean
>()
{
@Override
public
Boolean
doInRedis
(
RedisConnection
connection
)
throws
DataAccessException
{
...
...
@@ -81,7 +99,7 @@ public class MatrixRedisTemplate {
* 判定key是否存在
*/
public
<
K
>
Boolean
exists
(
K
k
)
{
final
RedisSerializer
keySeri
=
redisTemplate
.
getKeySerializer
();
final
RedisSerializer
keySeri
=
getKeySerializer
();
return
redisTemplate
.
execute
(
new
RedisCallback
<
Boolean
>()
{
@Override
public
Boolean
doInRedis
(
RedisConnection
connection
)
throws
DataAccessException
{
...
...
@@ -97,8 +115,8 @@ public class MatrixRedisTemplate {
* @author zhangxiaosong
*/
public
<
K
,
V
>
void
set
(
K
k
,
V
v
,
long
seconds
)
{
final
RedisSerializer
keySeri
=
redisTemplate
.
getKeySerializer
();
final
RedisSerializer
valueSeri
=
redisTemplate
.
getValueSerializer
();
final
RedisSerializer
keySeri
=
getKeySerializer
();
final
RedisSerializer
valueSeri
=
getValueSerializer
();
redisTemplate
.
execute
(
new
RedisCallback
<
Object
>()
{
@Override
public
Object
doInRedis
(
RedisConnection
connection
)
throws
DataAccessException
{
...
...
@@ -124,7 +142,7 @@ public class MatrixRedisTemplate {
* @param timeUnit 时间单位
*/
public
<
K
>
Long
ttl
(
K
k
,
TimeUnit
timeUnit
)
{
final
RedisSerializer
keySeri
=
redisTemplate
.
getKeySerializer
();
final
RedisSerializer
keySeri
=
getKeySerializer
();
return
redisTemplate
.
execute
(
new
RedisCallback
<
Long
>()
{
@Override
public
Long
doInRedis
(
RedisConnection
connection
)
throws
DataAccessException
{
...
...
@@ -136,10 +154,10 @@ public class MatrixRedisTemplate {
/**
* 获取剩余存活时间
*
* @param k
key
* @param k key
*/
public
<
K
>
Long
ttl
(
K
k
)
{
final
RedisSerializer
keySeri
=
redisTemplate
.
getKeySerializer
();
final
RedisSerializer
keySeri
=
getKeySerializer
();
return
redisTemplate
.
execute
(
new
RedisCallback
<
Long
>()
{
@Override
public
Long
doInRedis
(
RedisConnection
connection
)
throws
DataAccessException
{
...
...
@@ -155,7 +173,7 @@ public class MatrixRedisTemplate {
* @param step 每次增加多少
*/
public
<
K
>
Long
incr
(
K
k
,
long
step
)
{
final
RedisSerializer
keySeri
=
redisTemplate
.
getKeySerializer
();
final
RedisSerializer
keySeri
=
getKeySerializer
();
return
redisTemplate
.
execute
(
new
RedisCallback
<
Long
>()
{
@Override
public
Long
doInRedis
(
RedisConnection
connection
)
throws
DataAccessException
{
...
...
@@ -175,8 +193,8 @@ public class MatrixRedisTemplate {
return
;
}
final
RedisSerializer
keySeri
=
redisTemplate
.
getKeySerializer
();
final
RedisSerializer
valueSeri
=
redisTemplate
.
getValueSerializer
();
final
RedisSerializer
keySeri
=
getKeySerializer
();
final
RedisSerializer
valueSeri
=
getValueSerializer
();
redisTemplate
.
execute
(
new
RedisCallback
<
Object
>()
{
@Override
public
Object
doInRedis
(
RedisConnection
connection
)
throws
DataAccessException
{
...
...
@@ -185,13 +203,11 @@ public class MatrixRedisTemplate {
K
k
=
entry
.
getKey
();
V
v
=
entry
.
getValue
();
if
(
seconds
==
null
)
{
connection
.
set
(
keySeri
.
serialize
(
k
),
valueSeri
.
serialize
(
v
));
connection
.
set
(
keySeri
.
serialize
(
k
),
valueSeri
.
serialize
(
v
));
}
else
{
connection
.
set
(
keySeri
.
serialize
(
k
),
valueSeri
.
serialize
(
v
),
Expiration
.
seconds
(
seconds
),
SetOption
.
UPSERT
);
connection
.
set
(
keySeri
.
serialize
(
k
),
valueSeri
.
serialize
(
v
),
Expiration
.
seconds
(
seconds
),
SetOption
.
UPSERT
);
}
}
return
null
;
...
...
@@ -203,7 +219,7 @@ public class MatrixRedisTemplate {
* 删除指定的可以
*/
public
<
K
>
void
del
(
K
k
)
{
final
RedisSerializer
keySeri
=
redisTemplate
.
getKeySerializer
();
final
RedisSerializer
keySeri
=
getKeySerializer
();
redisTemplate
.
execute
(
new
RedisCallback
<
Object
>()
{
@Override
public
Object
doInRedis
(
RedisConnection
connection
)
throws
DataAccessException
{
...
...
@@ -284,7 +300,7 @@ public class MatrixRedisTemplate {
/**
* key value get方法
*/
public
<
K
,
V
>
V
get
(
K
k
,
Class
<
V
>
v
)
{
public
<
K
,
V
>
V
get
(
K
k
,
Class
<
V
>
v
)
{
if
(
k
==
null
)
{
return
null
;
}
...
...
@@ -401,9 +417,9 @@ public class MatrixRedisTemplate {
* @author zhangxiaosong
*/
public
<
K
,
F
,
V
>
void
hSet
(
K
k
,
F
f
,
V
v
)
{
final
RedisSerializer
keySeri
=
redisTemplate
.
getKeySerializer
();
final
RedisSerializer
hashKeySeri
=
redisTemplate
.
getHashKeySerializer
();
final
RedisSerializer
hashValueSeri
=
redisTemplate
.
getHashValueSerializer
();
final
RedisSerializer
keySeri
=
getKeySerializer
();
final
RedisSerializer
hashKeySeri
=
getHashKeySerializer
();
final
RedisSerializer
hashValueSeri
=
getHashValueSerializer
();
redisTemplate
.
execute
(
new
RedisCallback
<
Object
>()
{
@Override
public
Object
doInRedis
(
RedisConnection
connection
)
throws
DataAccessException
{
...
...
@@ -422,9 +438,9 @@ public class MatrixRedisTemplate {
* @param v 哈希表值
*/
public
<
K
,
F
,
V
>
void
hSetNX
(
K
k
,
F
f
,
V
v
)
{
final
RedisSerializer
keySeri
=
redisTemplate
.
getKeySerializer
();
final
RedisSerializer
hashKeySeri
=
redisTemplate
.
getHashKeySerializer
();
final
RedisSerializer
hashValueSeri
=
redisTemplate
.
getHashValueSerializer
();
final
RedisSerializer
keySeri
=
getKeySerializer
();
final
RedisSerializer
hashKeySeri
=
getHashKeySerializer
();
final
RedisSerializer
hashValueSeri
=
getHashValueSerializer
();
redisTemplate
.
execute
(
new
RedisCallback
<
Object
>()
{
@Override
public
Object
doInRedis
(
RedisConnection
connection
)
throws
DataAccessException
{
...
...
@@ -443,9 +459,9 @@ public class MatrixRedisTemplate {
* @param increment 增量
*/
public
<
K
,
F
>
Long
hIncrBy
(
K
k
,
F
f
,
Long
increment
)
{
final
RedisSerializer
keySeri
=
redisTemplate
.
getKeySerializer
();
final
RedisSerializer
hashKeySeri
=
redisTemplate
.
getHashKeySerializer
();
final
RedisSerializer
hashValueSeri
=
redisTemplate
.
getHashValueSerializer
();
final
RedisSerializer
keySeri
=
getKeySerializer
();
final
RedisSerializer
hashKeySeri
=
getHashKeySerializer
();
final
RedisSerializer
hashValueSeri
=
getHashValueSerializer
();
return
redisTemplate
.
execute
(
new
RedisCallback
<
Long
>()
{
@Override
...
...
@@ -466,9 +482,9 @@ public class MatrixRedisTemplate {
if
(
map
==
null
||
map
.
size
()
==
0
)
{
return
;
}
final
RedisSerializer
keySeri
=
redisTemplate
.
getKeySerializer
();
final
RedisSerializer
hashKeySeri
=
redisTemplate
.
getHashKeySerializer
();
final
RedisSerializer
hashValueSeri
=
redisTemplate
.
getHashValueSerializer
();
final
RedisSerializer
keySeri
=
getKeySerializer
();
final
RedisSerializer
hashKeySeri
=
getHashKeySerializer
();
final
RedisSerializer
hashValueSeri
=
getHashValueSerializer
();
Map
<
byte
[],
byte
[]>
byteMap
=
new
HashMap
<>();
for
(
Map
.
Entry
<
F
,
V
>
ety
:
map
.
entrySet
())
{
byteMap
.
put
(
hashKeySeri
.
serialize
(
ety
.
getKey
()),
...
...
@@ -554,22 +570,4 @@ public class MatrixRedisTemplate {
}
private
RedisSerializer
getKeySerializer
()
{
return
redisTemplate
.
getKeySerializer
();
}
private
RedisSerializer
getValueSerializer
()
{
return
redisTemplate
.
getValueSerializer
();
}
private
RedisSerializer
getHashKeySerializer
()
{
return
redisTemplate
.
getHashKeySerializer
();
}
private
RedisSerializer
getHashValueSerializer
()
{
return
redisTemplate
.
getHashValueSerializer
();
}
}
matrix-datahelper/matrix-datahelper-redis-starter/pom.xml
View file @
a9b2085d
...
...
@@ -15,6 +15,10 @@
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-redis
</artifactId>
</dependency>
<dependency>
<groupId>
com.secoo.mall
</groupId>
<artifactId>
matrix-datahelper-redis-core
</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
matrix-datahelper/matrix-datahelper-redis-starter/src/main/java/com/secoo/mall/mybatis/spring/boot/autoconfigure/MatrixeRedisAutoConfiguration.java
deleted
100644 → 0
View file @
46aecfb6
package
com
.
secoo
.
mall
.
mybatis
.
spring
.
boot
.
autoconfigure
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.serializer.RedisSerializer
;
import
org.springframework.data.redis.serializer.StringRedisSerializer
;
/**
* Created by QIANG
*
* @author QIANG
*/
@Configuration
public
class
MatrixeRedisAutoConfiguration
{
@Bean
public
RedisTemplate
<
String
,
String
>
redisTemplate
(
RedisConnectionFactory
redisConnectionFactory
)
{
RedisSerializer
stringSerializer
=
new
StringRedisSerializer
();
RedisTemplate
<
String
,
String
>
redisTemplate
=
new
RedisTemplate
();
redisTemplate
.
setConnectionFactory
(
redisConnectionFactory
);
redisTemplate
.
setKeySerializer
(
stringSerializer
);
redisTemplate
.
setValueSerializer
(
stringSerializer
);
redisTemplate
.
setHashKeySerializer
(
stringSerializer
);
redisTemplate
.
setHashValueSerializer
(
stringSerializer
);
return
redisTemplate
;
}
}
matrix-datahelper/matrix-datahelper-redis-starter/src/main/java/com/secoo/mall/redis/spring/boot/autoconfigure/MatrixeRedisAutoConfiguration.java
0 → 100644
View file @
a9b2085d
package
com
.
secoo
.
mall
.
redis
.
spring
.
boot
.
autoconfigure
;
import
com.secoo.mall.redis.helper.RedisHelper
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.boot.autoconfigure.AutoConfigureBefore
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnClass
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.connection.RedisConnectionFactory
;
import
org.springframework.data.redis.core.RedisOperations
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
java.net.UnknownHostException
;
/**
* Created by QIANG
*
* @author QIANG
*/
@Configuration
@ConditionalOnClass
({
RedisOperations
.
class
})
@AutoConfigureBefore
({
RedisAutoConfiguration
.
class
})
public
class
MatrixeRedisAutoConfiguration
{
@Bean
@ConditionalOnMissingBean
(
name
=
{
"redisTemplate"
})
public
RedisTemplate
<
Object
,
Object
>
redisTemplate
(
RedisConnectionFactory
redisConnectionFactory
)
throws
UnknownHostException
{
RedisTemplate
<
Object
,
Object
>
template
=
new
RedisTemplate
();
template
.
setConnectionFactory
(
redisConnectionFactory
);
return
template
;
}
@Bean
@ConditionalOnMissingBean
(
name
=
"redisHelper"
)
public
RedisHelper
redisHelper
(
@Qualifier
(
"redisTemplate"
)
RedisTemplate
redisTemplate
)
{
return
new
RedisHelper
(
redisTemplate
);
}
}
matrix-datahelper/matrix-datahelper-redis-starter/src/main/resources/META-INF/spring.factories
0 → 100644
View file @
a9b2085d
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.secoo.mall.redis.spring.boot.autoconfigure.MatrixeRedisAutoConfiguration
\ No newline at end of file
pom.xml
View file @
a9b2085d
...
...
@@ -172,11 +172,16 @@
<version>
1.3.2.RELEASE
</version>
</dependency>
<!--redis-->
<!-- <dependency>
<dependency>
<groupId>
com.secoo.mall
</groupId>
<artifactId>
matrix-datahelper-redis-core
</artifactId>
<version>
1.3.2.RELEASE
</version>
</dependency>
<dependency>
<groupId>
com.secoo.mall
</groupId>
<artifactId>
matrix-datahelper-redis-starter
</artifactId>
<version>
1.3.2.RELEASE
</version>
</dependency>
-->
</dependency>
<!--普通jar-->
...
...
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