Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
freemud-framework
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
qing.xu
freemud-framework
Commits
bf902846
Commit
bf902846
authored
Jun 06, 2018
by
qing.xu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
提交redis封装
parent
6e998bce
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
1063 additions
and
218 deletions
+1063
-218
freemud-framework-redis/src/main/java/com/freemud/framework/redis/RedisService.java
+404
-218
freemud-framework-redis/src/main/java/com/freemud/framework/redis/RedisServiceImpl.java
+659
-0
No files found.
freemud-framework-redis/src/main/java/com/freemud/framework/redis/RedisService.java
View file @
bf902846
package
com
.
freemud
.
framework
.
redis
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.alibaba.fastjson.TypeReference
;
import
com.freemud.framework.utils.StringUtil
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.BoundValueOperations
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.stereotype.Component
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.concurrent.TimeUnit
;
/**
* All rights Reserved, Designed By www.freemud.cn
*
* @version V1.0
* @Title: Redis
* @Package: com.freemud.base.message
* @Descripttion: redis对template封装
* @author:qing.xu
* @date: 2018/6/5
* @Copyright: 2017 www.freemud.cn Inc. All rights reserved.
* 注意:本内容仅限于上海非码科技内部传阅,禁止外泄以及用于其他的商业目.
*/
@Component
public
class
RedisService
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
RedisService
.
class
);
@Autowired
private
StringRedisTemplate
template
;
@Autowired
private
RedisTemplate
redisTemplate
;
/**
* 通过k获取value,redis数据结构为 k-v
*
* @param key
* @return
*/
public
<
T
>
Optional
<
T
>
getValue
(
String
key
,
Class
<
T
>
tClass
)
{
try
{
BoundValueOperations
<
String
,
String
>
operations
=
template
.
boundValueOps
(
key
);
String
str
=
operations
.
get
();
if
(
str
==
null
)
{
return
Optional
.
empty
();
}
return
Optional
.
ofNullable
(
JSON
.
parseObject
(
str
,
tClass
));
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
());
}
return
Optional
.
empty
();
}
public
<
T
>
List
<
T
>
getListValue
(
String
key
,
Class
<
T
>
tClass
)
{
try
{
BoundValueOperations
<
String
,
String
>
operations
=
template
.
boundValueOps
(
key
);
String
str
=
operations
.
get
();
if
(
str
==
null
){
return
new
ArrayList
<>();
}
return
JSON
.
parseArray
(
str
,
tClass
);
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
());
}
return
new
ArrayList
<>();
}
/**
* 设置k-v
* 过期时间为1小时
*
* @param key
* @param value
*/
public
void
setStringVale
(
String
key
,
Object
value
,
long
expiretime
,
TimeUnit
timeUnit
)
{
try
{
template
.
boundValueOps
(
key
).
set
(
JSON
.
toJSONString
(
value
),
expiretime
,
timeUnit
);
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
());
}
}
/**
* 在hash表增加记录
*
* @param key 表名
* @param hkey 行记录名
* @param value 值
*/
public
void
setHashValue
(
String
key
,
String
hkey
,
Object
value
)
{
try
{
template
.
boundHashOps
(
key
).
put
(
hkey
,
JSON
.
toJSONString
(
value
));
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
());
}
}
/**
* 获取hash表数据、
*
* @param key
* @param hkey
* @return
*/
public
<
T
>
Optional
<
T
>
getHashValue
(
String
key
,
String
hkey
,
Class
<
T
>
tClass
)
{
try
{
Object
obj
=
template
.
boundHashOps
(
key
).
get
(
hkey
);
if
(
obj
==
null
)
{
return
Optional
.
empty
();
}
String
str
=
obj
.
toString
();
return
Optional
.
ofNullable
(
JSON
.
parseObject
(
str
,
tClass
));
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
());
}
return
Optional
.
empty
();
}
/**
* 删除一个key
*
* @param key
* @param hkey
*/
public
void
deleteHashValue
(
String
key
,
String
hkey
)
{
try
{
template
.
boundHashOps
(
key
).
delete
(
hkey
);
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
());
}
}
public
<
T
>
void
saveList
(
String
key
,
List
<
T
>
vals
,
long
expiretime
,
TimeUnit
timeUnit
)
{
try
{
template
.
boundValueOps
(
key
).
set
(
JSON
.
toJSONString
(
vals
),
expiretime
,
timeUnit
);
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
());
}
}
public
<
T
>
void
leftPush
(
String
key
,
T
vals
)
{
try
{
template
.
boundListOps
(
key
).
leftPush
(
JSONObject
.
toJSONString
(
vals
));
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
());
}
}
public
<
T
>
Optional
<
T
>
rightPop
(
String
key
)
{
try
{
String
str
=
template
.
boundListOps
(
key
).
rightPop
();
if
(
StringUtil
.
isNullOrWhiteSpace
(
str
)){
return
Optional
.
empty
();
}
T
ret
=
JSON
.
parseObject
(
str
,
new
TypeReference
<
T
>(){});
return
Optional
.
ofNullable
(
ret
);
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
());
}
return
Optional
.
empty
();
}
public
<
T
>
void
pushAll
(
String
key
,
List
<
T
>
vals
)
{
try
{
List
<
String
>
ls
=
new
ArrayList
<>();
for
(
T
strVal
:
vals
)
{
ls
.
add
(
JSONObject
.
toJSONString
(
strVal
));
}
template
.
boundListOps
(
key
).
leftPushAll
(
ls
.
toArray
(
new
String
[
ls
.
size
()]));
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
());
}
}
public
<
T
>
List
<
T
>
range
(
String
key
,
long
start
,
long
end
,
Class
tClass
)
{
try
{
List
<
String
>
list
=
template
.
boundListOps
(
key
).
range
(
start
,
end
);
String
str
=
list
.
toString
();
return
JSONObject
.
parseArray
(
str
,
tClass
);
}
catch
(
Exception
e
)
{
logger
.
error
(
e
.
getMessage
());
}
return
null
;
}
public
Long
incrby
(
String
key
,
long
rank
)
{
return
template
.
boundValueOps
(
key
).
increment
(
rank
);
}
// public Object evalScript(String script,List<String> keys,String... args){
// final Object result = redisTemplate.execute(new RedisScript() {
// @Override
// public String getSha1() {
// return EncryptUtil.encrypt(script);
// }
//
// @Override
// public Class getResultType() {
// return Object.class;
// }
//
// @Override
// public String getScriptAsString() {
// return script;
// }
// },keys,args);
// return result;
// }
}
package
com
.
freemud
.
framework
.
redis
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
public
interface
RedisService
<
T
>
{
/**
* 指定缓存失效时间
*
* @param key
* 键
* @param time
* 时间(秒)
* @return
*/
public
boolean
expire
(
String
key
,
long
time
);
/**
* 根据key 获取过期时间
*
* @param key
* 键 不能为null
* @return 时间(秒) 返回0代表为永久有效
*/
public
long
getExpire
(
String
key
);
/**
* 判断key是否存在
*
* @param key
* 键
* @return true 存在 false不存在
*/
public
boolean
hasKey
(
String
key
)
;
/**
* 删除缓存
*
* @param key
* 可以传一个值 或多个
*/
@SuppressWarnings
(
"unchecked"
)
public
void
del
(
String
...
key
)
;
// ============================String=============================
/**
* 普通缓存获取
*
* @param key
* 键
* @return 值
*/
public
T
get
(
String
key
)
;
/**
* 普通缓存放入
*
* @param key
* 键
* @param value
* 值
* @return true成功 false失败
*/
public
boolean
set
(
String
key
,
T
value
)
;
/**
* 普通缓存放入并设置时间
*
* @param key
* 键
* @param value
* 值
* @param time
* 时间(秒) time要大于0 如果time小于等于0 将设置无限期
* @return true成功 false 失败
*/
public
boolean
set
(
String
key
,
T
value
,
long
time
)
;
/**
* 递增
*
* @param key
* 键
* @param by
* 要增加几(大于0)
* @return
*/
public
long
incr
(
String
key
,
long
delta
)
;
/**
* 递减
*
* @param key
* 键
* @param by
* 要减少几(小于0)
* @return
*/
public
long
decr
(
String
key
,
long
delta
)
;
// ================================Map=================================
/**
* HashGet
*
* @param key
* 键 不能为null
* @param item
* 项 不能为null
* @return 值
*/
public
Object
hget
(
String
key
,
String
item
)
;
/**
* 获取hashKey对应的所有键值
*
* @param key
* 键
* @return 对应的多个键值
*/
public
Map
<
Object
,
Object
>
hmget
(
String
key
)
;
/**
* HashSet
*
* @param key
* 键
* @param map
* 对应多个键值
* @return true 成功 false 失败
*/
public
boolean
hmset
(
String
key
,
Map
<
String
,
Object
>
map
)
;
/**
* HashSet 并设置时间
*
* @param key
* 键
* @param map
* 对应多个键值
* @param time
* 时间(秒)
* @return true成功 false失败
*/
public
boolean
hmset
(
String
key
,
Map
<
String
,
Object
>
map
,
long
time
)
;
/**
* 向一张hash表中放入数据,如果不存在将创建
*
* @param key
* 键
* @param item
* 项
* @param value
* 值
* @return true 成功 false失败
*/
public
boolean
hset
(
String
key
,
String
item
,
T
value
)
;
/**
* 向一张hash表中放入数据,如果不存在将创建
*
* @param key
* 键
* @param item
* 项
* @param value
* 值
* @param time
* 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间
* @return true 成功 false失败
*/
public
boolean
hset
(
String
key
,
String
item
,
T
value
,
long
time
)
;
/**
* 删除hash表中的值
*
* @param key
* 键 不能为null
* @param item
* 项 可以使多个 不能为null
*/
public
void
hdel
(
String
key
,
Object
...
item
)
;
/**
* 判断hash表中是否有该项的值
*
* @param key
* 键 不能为null
* @param item
* 项 不能为null
* @return true 存在 false不存在
*/
public
boolean
hHasKey
(
String
key
,
String
item
)
;
/**
* hash递增 如果不存在,就会创建一个 并把新增后的值返回
*
* @param key
* 键
* @param item
* 项
* @param by
* 要增加几(大于0)
* @return
*/
public
double
hincr
(
String
key
,
String
item
,
double
by
)
;
/**
* hash递减
*
* @param key
* 键
* @param item
* 项
* @param by
* 要减少记(小于0)
* @return
*/
public
double
hdecr
(
String
key
,
String
item
,
double
by
)
;
// ============================set=============================
/**
* 根据key获取Set中的所有值
*
* @param key
* 键
* @return
*/
public
Set
<
T
>
sGet
(
String
key
)
;
/**
* 根据value从一个set中查询,是否存在
*
* @param key
* 键
* @param value
* 值
* @return true 存在 false不存在
*/
public
boolean
sHasKey
(
String
key
,
T
value
)
;
/**
* 将数据放入set缓存
*
* @param key
* 键
* @param values
* 值 可以是多个
* @return 成功个数
*/
public
long
sSet
(
String
key
,
T
...
values
)
;
/**
* 将set数据放入缓存
*
* @param key
* 键
* @param time
* 时间(秒)
* @param values
* 值 可以是多个
* @return 成功个数
*/
public
long
sSetAndTime
(
String
key
,
long
time
,
T
...
values
)
;
/**
* 获取set缓存的长度
*
* @param key
* 键
* @return
*/
public
long
sGetSetSize
(
String
key
)
;
/**
* 移除值为value的
*
* @param key
* 键
* @param values
* 值 可以是多个
* @return 移除的个数
*/
public
long
setRemove
(
String
key
,
Object
...
values
)
;
// ===============================list=================================
/**
* 获取list缓存的内容
*
* @param key
* 键
* @param start
* 开始
* @param end
* 结束 0 到 -1代表所有值
* @return
*/
public
List
<
T
>
lGet
(
String
key
,
long
start
,
long
end
)
;
/**
* 获取list缓存的内容
*
* @param key
* 键
*/
public
List
<
T
>
lGetAll
(
String
key
)
;
/**
* 获取list缓存的长度
*
* @param key
* 键
* @return
*/
public
long
lGetListSize
(
String
key
)
;
/**
* 通过索引 获取list中的值
*
* @param key
* 键
* @param index
* 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推
* @return
*/
public
Object
lGetIndex
(
String
key
,
long
index
)
;
/**
* 将list放入缓存
*
* @param key
* 键
* @param value
* 值
* @param time
* 时间(秒)
* @return
*/
public
boolean
lSet
(
String
key
,
T
value
)
;
/**
* 将list放入缓存
*
* @param key
* 键
* @param value
* 值
* @param time
* 时间(秒)
* @return
*/
public
boolean
lSet
(
String
key
,
T
value
,
long
time
)
;
/**
* 将list放入缓存
*
* @param key
* 键
* @param value
* 值
* @param time
* 时间(秒)
* @return
*/
public
boolean
lSet
(
String
key
,
List
<
T
>
value
)
;
/**
* 将list放入缓存
*
* @param key
* 键
* @param value
* 值
* @param time
* 时间(秒)
* @return
*/
public
boolean
lSet
(
String
key
,
List
<
T
>
value
,
long
time
)
;
/**
* 根据索引修改list中的某条数据
*
* @param key
* 键
* @param index
* 索引
* @param value
* 值
* @return
*/
public
boolean
lUpdateIndex
(
String
key
,
long
index
,
T
value
)
;
/**
* 移除N个值为value
*
* @param key
* 键
* @param count
* 移除多少个
* @param value
* 值
* @return 移除的个数
*/
public
long
lRemove
(
String
key
,
long
count
,
T
value
)
;
}
freemud-framework-redis/src/main/java/com/freemud/framework/redis/RedisServiceImpl.java
0 → 100644
View file @
bf902846
package
com
.
freemud
.
framework
.
redis
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.concurrent.TimeUnit
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
@Service
public
class
RedisServiceImpl
<
T
>
implements
RedisService
<
T
>
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
RedisServiceImpl
.
class
);
@Autowired
private
RedisTemplate
<
Object
,
T
>
redisTemplate
;
/**
* 指定缓存失效时间
*
* @param key
* 键
* @param time
* 时间(秒)
* @return
*/
public
boolean
expire
(
String
key
,
long
time
)
{
try
{
if
(
time
>
0
)
{
redisTemplate
.
expire
(
key
,
time
,
TimeUnit
.
SECONDS
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
false
;
}
/**
* 根据key 获取过期时间
*
* @param key
* 键 不能为null
* @return 时间(秒) 返回0代表为永久有效
*/
public
long
getExpire
(
String
key
)
{
return
redisTemplate
.
getExpire
(
key
,
TimeUnit
.
SECONDS
);
}
/**
* 判断key是否存在
*
* @param key
* 键
* @return true 存在 false不存在
*/
public
boolean
hasKey
(
String
key
)
{
try
{
return
redisTemplate
.
hasKey
(
key
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 删除缓存
*
* @param key
* 可以传一个值 或多个
*/
@SuppressWarnings
(
"unchecked"
)
public
void
del
(
String
...
key
)
{
if
(
key
!=
null
&&
key
.
length
>
0
)
{
if
(
key
.
length
==
1
)
{
redisTemplate
.
delete
(
key
[
0
]);
}
else
{
redisTemplate
.
delete
(
CollectionUtils
.
arrayToList
(
key
));
}
}
}
// ============================String=============================
/**
* 普通缓存获取
*
* @param key
* 键
* @return 值
*/
public
T
get
(
String
key
)
{
return
key
==
null
?
null
:
redisTemplate
.
opsForValue
().
get
(
key
);
}
/**
* 普通缓存放入
*
* @param key
* 键
* @param value
* 值
* @return true成功 false失败
*/
public
boolean
set
(
String
key
,
T
value
)
{
try
{
redisTemplate
.
opsForValue
().
set
(
key
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
false
;
}
/**
* 普通缓存放入并设置时间
*
* @param key
* 键
* @param value
* 值
* @param time
* 时间(秒) time要大于0 如果time小于等于0 将设置无限期
* @return true成功 false 失败
*/
public
boolean
set
(
String
key
,
T
value
,
long
time
)
{
try
{
if
(
time
>
0
)
{
redisTemplate
.
opsForValue
().
set
(
key
,
value
,
time
,
TimeUnit
.
SECONDS
);
}
else
{
set
(
key
,
value
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 递增
*
* @param key
* 键
* @param by
* 要增加几(大于0)
* @return
*/
public
long
incr
(
String
key
,
long
delta
)
{
if
(
delta
<
0
)
{
throw
new
RuntimeException
(
"递增因子必须大于0"
);
}
return
redisTemplate
.
opsForValue
().
increment
(
key
,
delta
);
}
/**
* 递减
*
* @param key
* 键
* @param by
* 要减少几(小于0)
* @return
*/
public
long
decr
(
String
key
,
long
delta
)
{
if
(
delta
<
0
)
{
throw
new
RuntimeException
(
"递减因子必须大于0"
);
}
return
redisTemplate
.
opsForValue
().
increment
(
key
,
-
delta
);
}
// ================================Map=================================
/**
* HashGet
*
* @param key
* 键 不能为null
* @param item
* 项 不能为null
* @return 值
*/
public
Object
hget
(
String
key
,
String
item
)
{
return
redisTemplate
.
opsForHash
().
get
(
key
,
item
);
}
/**
* 获取hashKey对应的所有键值
*
* @param key
* 键
* @return 对应的多个键值
*/
public
Map
<
Object
,
Object
>
hmget
(
String
key
)
{
return
redisTemplate
.
opsForHash
().
entries
(
key
);
}
/**
* HashSet
*
* @param key
* 键
* @param map
* 对应多个键值
* @return true 成功 false 失败
*/
public
boolean
hmset
(
String
key
,
Map
<
String
,
Object
>
map
)
{
try
{
redisTemplate
.
opsForHash
().
putAll
(
key
,
map
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* HashSet 并设置时间
*
* @param key
* 键
* @param map
* 对应多个键值
* @param time
* 时间(秒)
* @return true成功 false失败
*/
public
boolean
hmset
(
String
key
,
Map
<
String
,
Object
>
map
,
long
time
)
{
try
{
redisTemplate
.
opsForHash
().
putAll
(
key
,
map
);
if
(
time
>
0
)
{
expire
(
key
,
time
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建
*
* @param key
* 键
* @param item
* 项
* @param value
* 值
* @return true 成功 false失败
*/
public
boolean
hset
(
String
key
,
String
item
,
T
value
)
{
try
{
redisTemplate
.
opsForHash
().
put
(
key
,
item
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 向一张hash表中放入数据,如果不存在将创建
*
* @param key
* 键
* @param item
* 项
* @param value
* 值
* @param time
* 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间
* @return true 成功 false失败
*/
public
boolean
hset
(
String
key
,
String
item
,
T
value
,
long
time
)
{
try
{
redisTemplate
.
opsForHash
().
put
(
key
,
item
,
value
);
if
(
time
>
0
)
{
expire
(
key
,
time
);
}
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 删除hash表中的值
*
* @param key
* 键 不能为null
* @param item
* 项 可以使多个 不能为null
*/
public
void
hdel
(
String
key
,
Object
...
item
)
{
redisTemplate
.
opsForHash
().
delete
(
key
,
item
);
}
/**
* 判断hash表中是否有该项的值
*
* @param key
* 键 不能为null
* @param item
* 项 不能为null
* @return true 存在 false不存在
*/
public
boolean
hHasKey
(
String
key
,
String
item
)
{
return
redisTemplate
.
opsForHash
().
hasKey
(
key
,
item
);
}
/**
* hash递增 如果不存在,就会创建一个 并把新增后的值返回
*
* @param key
* 键
* @param item
* 项
* @param by
* 要增加几(大于0)
* @return
*/
public
double
hincr
(
String
key
,
String
item
,
double
by
)
{
return
redisTemplate
.
opsForHash
().
increment
(
key
,
item
,
by
);
}
/**
* hash递减
*
* @param key
* 键
* @param item
* 项
* @param by
* 要减少记(小于0)
* @return
*/
public
double
hdecr
(
String
key
,
String
item
,
double
by
)
{
return
redisTemplate
.
opsForHash
().
increment
(
key
,
item
,
-
by
);
}
// ============================set=============================
/**
* 根据key获取Set中的所有值
*
* @param key
* 键
* @return
*/
public
Set
<
T
>
sGet
(
String
key
)
{
try
{
return
redisTemplate
.
opsForSet
().
members
(
key
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 根据value从一个set中查询,是否存在
*
* @param key
* 键
* @param value
* 值
* @return true 存在 false不存在
*/
public
boolean
sHasKey
(
String
key
,
T
value
)
{
try
{
return
redisTemplate
.
opsForSet
().
isMember
(
key
,
value
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 将数据放入set缓存
*
* @param key
* 键
* @param values
* 值 可以是多个
* @return 成功个数
*/
public
long
sSet
(
String
key
,
T
...
values
)
{
try
{
return
redisTemplate
.
opsForSet
().
add
(
key
,
values
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
/**
* 将set数据放入缓存
*
* @param key
* 键
* @param time
* 时间(秒)
* @param values
* 值 可以是多个
* @return 成功个数
*/
public
long
sSetAndTime
(
String
key
,
long
time
,
T
...
values
)
{
try
{
Long
count
=
redisTemplate
.
opsForSet
().
add
(
key
,
values
);
if
(
time
>
0
)
expire
(
key
,
time
);
return
count
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
/**
* 获取set缓存的长度
*
* @param key
* 键
* @return
*/
public
long
sGetSetSize
(
String
key
)
{
try
{
return
redisTemplate
.
opsForSet
().
size
(
key
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
/**
* 移除值为value的
*
* @param key
* 键
* @param values
* 值 可以是多个
* @return 移除的个数
*/
public
long
setRemove
(
String
key
,
Object
...
values
)
{
try
{
Long
count
=
redisTemplate
.
opsForSet
().
remove
(
key
,
values
);
return
count
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
// ===============================list=================================
/**
* 获取list缓存的内容
*
* @param key
* 键
* @param start
* 开始
* @param end
* 结束 0 到 -1代表所有值
* @return
*/
public
List
<
T
>
lGet
(
String
key
,
long
start
,
long
end
)
{
try
{
return
redisTemplate
.
opsForList
().
range
(
key
,
start
,
end
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 获取list缓存的内容
*
* @param key
* 键
*/
public
List
<
T
>
lGetAll
(
String
key
)
{
try
{
return
lGet
(
key
,
0
,-
1
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 获取list缓存的长度
*
* @param key
* 键
* @return
*/
public
long
lGetListSize
(
String
key
)
{
try
{
return
redisTemplate
.
opsForList
().
size
(
key
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
/**
* 通过索引 获取list中的值
*
* @param key
* 键
* @param index
* 索引 index>=0时, 0 表头,1 第二个元素,依次类推;index<0时,-1,表尾,-2倒数第二个元素,依次类推
* @return
*/
public
Object
lGetIndex
(
String
key
,
long
index
)
{
try
{
return
redisTemplate
.
opsForList
().
index
(
key
,
index
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
null
;
}
}
/**
* 将list放入缓存
*
* @param key
* 键
* @param value
* 值
* @param time
* 时间(秒)
* @return
*/
public
boolean
lSet
(
String
key
,
T
value
)
{
try
{
redisTemplate
.
opsForList
().
rightPush
(
key
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 将list放入缓存
*
* @param key
* 键
* @param value
* 值
* @param time
* 时间(秒)
* @return
*/
public
boolean
lSet
(
String
key
,
T
value
,
long
time
)
{
try
{
redisTemplate
.
opsForList
().
rightPush
(
key
,
value
);
if
(
time
>
0
)
expire
(
key
,
time
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 将list放入缓存
*
* @param key
* 键
* @param value
* 值
* @param time
* 时间(秒)
* @return
*/
public
boolean
lSet
(
String
key
,
List
<
T
>
value
)
{
try
{
redisTemplate
.
opsForList
().
rightPushAll
(
key
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 将list放入缓存
*
* @param key
* 键
* @param value
* 值
* @param time
* 时间(秒)
* @return
*/
public
boolean
lSet
(
String
key
,
List
<
T
>
value
,
long
time
)
{
try
{
redisTemplate
.
opsForList
().
rightPushAll
(
key
,
value
);
if
(
time
>
0
)
expire
(
key
,
time
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 根据索引修改list中的某条数据
*
* @param key
* 键
* @param index
* 索引
* @param value
* 值
* @return
*/
public
boolean
lUpdateIndex
(
String
key
,
long
index
,
T
value
)
{
try
{
redisTemplate
.
opsForList
().
set
(
key
,
index
,
value
);
return
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
false
;
}
}
/**
* 移除N个值为value
*
* @param key
* 键
* @param count
* 移除多少个
* @param value
* 值
* @return 移除的个数
*/
public
long
lRemove
(
String
key
,
long
count
,
T
value
)
{
try
{
Long
remove
=
redisTemplate
.
opsForList
().
remove
(
key
,
count
,
value
);
return
remove
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
}
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