Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
onionZunyi
beauty_ssm
提交
3e52c6ba
B
beauty_ssm
项目概览
onionZunyi
/
beauty_ssm
与 Fork 源项目一致
Fork自
爱吃血肠 / beauty_ssm
通知
6
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
beauty_ssm
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3e52c6ba
编写于
7月 31, 2016
作者:
Y
yingjun
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
添加redis cluster支持
上级
61ab1390
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
124 addition
and
0 deletion
+124
-0
src/main/java/com/yingjun/ssm/cache/RedisClusterCache.java
src/main/java/com/yingjun/ssm/cache/RedisClusterCache.java
+124
-0
未找到文件。
src/main/java/com/yingjun/ssm/cache/RedisClusterCache.java
0 → 100644
浏览文件 @
3e52c6ba
package
com.yingjun.ssm.cache
;
import
com.yingjun.ssm.util.ProtoStuffSerializerUtil
;
import
org.springframework.stereotype.Component
;
import
redis.clients.jedis.Jedis
;
import
redis.clients.jedis.JedisCluster
;
import
redis.clients.jedis.JedisPool
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
/**
* redis缓存
*
* 采用Jedis Cluster
*
* @author yingjun
*
*/
@Component
public
class
RedisClusterCache
{
public
final
static
String
CAHCENAME
=
"cache"
;
//缓存名
public
final
static
int
CAHCETIME
=
60
;
//默认缓存时间
//@Autowired
private
JedisCluster
jedisCluster
;
public
<
T
>
void
putCache
(
String
key
,
T
obj
)
{
final
byte
[]
bkey
=
key
.
getBytes
();
final
byte
[]
bvalue
=
ProtoStuffSerializerUtil
.
serialize
(
obj
);
jedisCluster
.
set
(
bkey
,
bvalue
);
}
public
<
T
>
void
putCacheWithExpireTime
(
String
key
,
T
obj
,
int
expireTime
)
{
final
byte
[]
bkey
=
key
.
getBytes
();
final
byte
[]
bvalue
=
ProtoStuffSerializerUtil
.
serialize
(
obj
);
jedisCluster
.
setex
(
bkey
,
expireTime
,
bvalue
);
}
public
<
T
>
void
putListCache
(
String
key
,
List
<
T
>
objList
)
{
final
byte
[]
bkey
=
key
.
getBytes
();
final
byte
[]
bvalue
=
ProtoStuffSerializerUtil
.
serializeList
(
objList
);
jedisCluster
.
set
(
bkey
,
bvalue
);
}
public
<
T
>
void
putListCacheWithExpireTime
(
String
key
,
List
<
T
>
objList
,
int
expireTime
)
{
final
byte
[]
bkey
=
key
.
getBytes
();
final
byte
[]
bvalue
=
ProtoStuffSerializerUtil
.
serializeList
(
objList
);
jedisCluster
.
setex
(
bkey
,
expireTime
,
bvalue
);
}
public
<
T
>
T
getCache
(
final
String
key
,
Class
<
T
>
targetClass
)
{
byte
[]
result
=
jedisCluster
.
get
(
key
.
getBytes
());
if
(
result
==
null
)
{
return
null
;
}
return
ProtoStuffSerializerUtil
.
deserialize
(
result
,
targetClass
);
}
public
<
T
>
List
<
T
>
getListCache
(
String
key
,
Class
<
T
>
targetClass
)
{
byte
[]
result
=
jedisCluster
.
get
(
key
.
getBytes
());
if
(
result
==
null
)
{
return
null
;
}
return
ProtoStuffSerializerUtil
.
deserializeList
(
result
,
targetClass
);
}
/**
* 精确删除key
*
* @param key
*/
public
void
deleteCache
(
String
key
)
{
jedisCluster
.
del
(
key
);
}
/**
* 模糊删除key
*
* @param pattern
*/
public
void
deleteCacheWithPattern
(
String
pattern
)
{
Set
<
String
>
keys
=
this
.
keys
(
pattern
);
for
(
String
key:
keys
){
jedisCluster
.
del
(
key
);
}
}
/**
* 清空所有缓存
*/
public
void
clearCache
()
{
deleteCacheWithPattern
(
RedisClusterCache
.
CAHCENAME
+
"|*"
);
}
/**
* 由于JedisCluster没有提供对keys命令的封装,只能自己实现
* @param pattern
* @return
*/
public
Set
<
String
>
keys
(
String
pattern
){
Set
<
String
>
keys
=
new
HashSet
<>();
Map
<
String
,
JedisPool
>
clusterNodes
=
jedisCluster
.
getClusterNodes
();
for
(
String
k
:
clusterNodes
.
keySet
()){
JedisPool
jp
=
clusterNodes
.
get
(
k
);
Jedis
connection
=
jp
.
getResource
();
try
{
keys
.
addAll
(
connection
.
keys
(
pattern
));
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
finally
{
//用完一定要close这个链接!!!
connection
.
close
();
}
}
return
keys
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录