Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
8
8timerapiv200
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
8timerv2
8timerapiv200
Commits
d190c149
Commit
d190c149
authored
Aug 07, 2020
by
Administrator
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'develop_zyq' into 'develop'
Develop zyq See merge request 8timerv2/8timerapiv200!393
parents
9ff4824b
4c3ddfe4
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
882 additions
and
6 deletions
+882
-6
pom.xml
+13
-5
src/main/java/cn/timer/api/config/interceptor/RedisSessionInterceptor.java
+30
-0
src/main/java/cn/timer/api/controller/qyxx/CmsController.java
+14
-0
src/main/java/cn/timer/api/controller/yggl/YgglController.java
+9
-0
src/main/java/cn/timer/api/utils/ResponseResult.java
+1
-1
src/main/java/cn/timer/api/utils/redis/RedisConfig.java
+116
-0
src/main/java/cn/timer/api/utils/redis/RedisUtil.java
+599
-0
src/main/java/cn/timer/api/utils/redis/Status.java
+46
-0
src/main/resources/application-dev.yml
+18
-0
src/main/resources/application-pro.yml
+18
-0
src/main/resources/application-test.yml
+18
-0
No files found.
pom.xml
View file @
d190c149
...
...
@@ -111,11 +111,12 @@
</dependency>
<!-- optional这个需要为 true 热部署才有效 -->
<!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency> -->
<!--<dependency>-->
<!--<groupId>org.springframework.boot</groupId>-->
<!--<artifactId>spring-boot-devtools</artifactId>-->
<!--<optional>true</optional>-->
<!--<scope>runtime</scope>-->
<!--</dependency>-->
<!-- swagger2 -->
<dependency>
...
...
@@ -394,6 +395,13 @@
<version>
3.3.0
</version>
</dependency>
<!--springboot中的redis依赖-->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-redis
</artifactId>
<version>
1.4.7.RELEASE
</version>
</dependency>
</dependencies>
...
...
src/main/java/cn/timer/api/config/interceptor/RedisSessionInterceptor.java
View file @
d190c149
...
...
@@ -2,10 +2,14 @@ package cn.timer.api.config.interceptor;
import
java.io.IOException
;
import
javax.annotation.Resource
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.servlet.http.HttpSession
;
import
cn.hutool.core.bean.BeanUtil
;
import
cn.timer.api.bean.qyzx.QyzxEmpLogin
;
import
cn.timer.api.utils.redis.RedisUtil
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.servlet.HandlerInterceptor
;
import
org.springframework.web.servlet.ModelAndView
;
...
...
@@ -17,6 +21,9 @@ import cn.timer.api.utils.ResponseResult;
@Component
public
class
RedisSessionInterceptor
implements
HandlerInterceptor
{
@Resource
private
RedisUtil
redisUtil
;
@Override
public
boolean
preHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
)
throws
Exception
{
...
...
@@ -48,6 +55,19 @@ public class RedisSessionInterceptor implements HandlerInterceptor {
response401
(
response
);
return
false
;
}
try
{
QyzxEmpLogin
eld
=
BeanUtil
.
toBean
(
session
.
getAttribute
(
"ui"
),
QyzxEmpLogin
.
class
);
if
(
redisUtil
.
get
(
"BlockUser"
+
eld
.
getId
())!=
null
){
redisUtil
.
del
(
"BlockUser"
+
eld
.
getId
());
response302
(
response
);
return
false
;
}
}
catch
(
Exception
e
){
response401
(
response
);
return
false
;
}
// response401(response);
return
true
;
...
...
@@ -63,6 +83,16 @@ public class RedisSessionInterceptor implements HandlerInterceptor {
}
}
private
void
response302
(
HttpServletResponse
response
)
{
response
.
setCharacterEncoding
(
"UTF-8"
);
response
.
setContentType
(
"application/json; charset=utf-8"
);
try
{
response
.
getWriter
().
print
(
new
JSONObject
(
new
ResponseResult
().
kickOut
()).
toString
());
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
@Override
public
void
postHandle
(
HttpServletRequest
request
,
HttpServletResponse
response
,
Object
handler
,
ModelAndView
modelAndView
)
throws
Exception
{
...
...
src/main/java/cn/timer/api/controller/qyxx/CmsController.java
View file @
d190c149
...
...
@@ -6,8 +6,10 @@ import java.util.List;
import
java.util.Timer
;
import
java.util.TimerTask
;
import
cn.timer.api.utils.redis.RedisUtil
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.web.bind.annotation.DeleteMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
...
...
@@ -44,6 +46,8 @@ import cn.timer.api.utils.ResultUtil;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
javax.annotation.Resource
;
@RestController
@Api
(
tags
=
"5.0企业讯息"
)
@Transactional
...
...
@@ -56,6 +60,9 @@ public class CmsController {
@Autowired
private
CmsIsReadMapper
cmsIsReadMapper
;
@Resource
private
RedisUtil
redisUtil
;
// @Autowired
// private CmsAnnouncementMapper cmsAnnouncementMapper;
...
...
@@ -85,6 +92,13 @@ public class CmsController {
@GetMapping
(
value
=
"/zxqyxx"
)
@ApiOperation
(
value
=
"获取最新讯息的标题、发布时间"
,
httpMethod
=
"GET"
,
notes
=
"接口发布说明"
)
public
Result
<
List
<
CmsContent
>>
groupbyTime
(
@CurrentUser
UserBean
userBean
)
{
// new RedisUtil(new RedisTemplate<String, Object>()).set("1","2");
redisUtil
.
set
(
"scien"
,
"123123123123333"
);
redisUtil
.
set
(
"scien2"
,
"23"
);
redisUtil
.
set
(
"scien3"
,
"3"
);
redisUtil
.
set
(
"scien4"
,
"455"
);
redisUtil
.
set
(
"scien133"
,
"455"
);
redisUtil
.
set
(
"scien1111"
,
"455"
);
Integer
orgCode
=
userBean
.
getOrgCode
();
QueryWrapper
<
CmsContent
>
queryWrapper
=
new
QueryWrapper
<>();
queryWrapper
.
select
(
"id"
,
"title"
,
"author"
,
"releasetime"
,
"fmtpath"
).
eq
(
"releasestate"
,
0
)
...
...
src/main/java/cn/timer/api/controller/yggl/YgglController.java
View file @
d190c149
...
...
@@ -17,10 +17,12 @@ import java.util.Map;
import
java.util.Map.Entry
;
import
java.util.stream.Collectors
;
import
javax.annotation.Resource
;
import
javax.servlet.ServletOutputStream
;
import
javax.servlet.http.HttpServletResponse
;
import
javax.transaction.Transactional
;
import
cn.timer.api.utils.redis.RedisUtil
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.transaction.interceptor.TransactionAspectSupport
;
...
...
@@ -156,6 +158,12 @@ public class YgglController {
@Autowired
private
YgMzDtoMapper
ygMzDtoMapper
;
@Resource
private
RedisUtil
redisUtil
;
@Value
(
"${server.servlet.session.timeout}"
)
public
Integer
session_timeout
;
/**
* 获取员工档案
*
...
...
@@ -1377,6 +1385,7 @@ public class YgglController {
try
{
realtimeupdate
.
AttendanceTask
(
userBean
.
getOrgCode
(),
empNum
,
2
,
null
);
redisUtil
.
set
(
"BlockUser"
+
empNum
,
"BlockUser"
,
session_timeout
);
}
catch
(
ParseException
e
)
{
e
.
printStackTrace
();
}
...
...
src/main/java/cn/timer/api/utils/ResponseResult.java
View file @
d190c149
...
...
@@ -35,7 +35,7 @@ public class ResponseResult extends LinkedHashMap<String, Object> implements Ser
private
static
final
String
MESSAGE_FAIL
=
"操作失败"
;
private
static
final
String
MESSAGE_ERROR
=
"操作错误"
;
private
static
final
String
MESSAGE_UNLOGIN
=
"会话超时,请重新登录"
;
private
static
final
String
MESSAGE_KICKOUT
=
"
当前账户已在其他地方登录
,请重新登录"
;
private
static
final
String
MESSAGE_KICKOUT
=
"
你已被管理员移出公司
,请重新登录"
;
private
static
final
String
MESSAGE_PARAMERROR
=
"参数错误"
;
private
static
final
String
MESSAGE_UNAUTHORIZED
=
"授权错误"
;
private
static
final
String
MESSAGE_UNAUTHENTICATED
=
"认证错误"
;
...
...
src/main/java/cn/timer/api/utils/redis/RedisConfig.java
0 → 100644
View file @
d190c149
package
cn
.
timer
.
api
.
utils
.
redis
;
import
com.fasterxml.jackson.annotation.JsonAutoDetect
;
import
com.fasterxml.jackson.annotation.PropertyAccessor
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
org.springframework.cache.annotation.CachingConfigurerSupport
;
import
org.springframework.cache.annotation.EnableCaching
;
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.*
;
import
org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer
;
import
org.springframework.data.redis.serializer.StringRedisSerializer
;
/**
* redis配置类
* @program: springbootdemo
* @Date: 2019/1/25 15:20
* @Author: Mr.Zheng
* @Description:
*/
@Configuration
@EnableCaching
//开启注解
public
class
RedisConfig
extends
CachingConfigurerSupport
{
/**
* retemplate相关配置
* @param factory
* @return
*/
@Bean
public
RedisTemplate
<
String
,
Object
>
redisTemplate
(
RedisConnectionFactory
factory
)
{
RedisTemplate
<
String
,
Object
>
template
=
new
RedisTemplate
<>();
// 配置连接工厂
template
.
setConnectionFactory
(
factory
);
//使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
Jackson2JsonRedisSerializer
jacksonSeial
=
new
Jackson2JsonRedisSerializer
(
Object
.
class
);
ObjectMapper
om
=
new
ObjectMapper
();
// 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
om
.
setVisibility
(
PropertyAccessor
.
ALL
,
JsonAutoDetect
.
Visibility
.
ANY
);
// 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常
om
.
enableDefaultTyping
(
ObjectMapper
.
DefaultTyping
.
NON_FINAL
);
jacksonSeial
.
setObjectMapper
(
om
);
// 值采用json序列化
template
.
setValueSerializer
(
jacksonSeial
);
//使用StringRedisSerializer来序列化和反序列化redis的key值
template
.
setKeySerializer
(
new
StringRedisSerializer
());
// 设置hash key 和value序列化模式
template
.
setHashKeySerializer
(
new
StringRedisSerializer
());
template
.
setHashValueSerializer
(
jacksonSeial
);
template
.
afterPropertiesSet
();
return
template
;
}
/**
* 对hash类型的数据操作
*
* @param redisTemplate
* @return
*/
@Bean
public
HashOperations
<
String
,
String
,
Object
>
hashOperations
(
RedisTemplate
<
String
,
Object
>
redisTemplate
)
{
return
redisTemplate
.
opsForHash
();
}
/**
* 对redis字符串类型数据操作
*
* @param redisTemplate
* @return
*/
@Bean
public
ValueOperations
<
String
,
Object
>
valueOperations
(
RedisTemplate
<
String
,
Object
>
redisTemplate
)
{
return
redisTemplate
.
opsForValue
();
}
/**
* 对链表类型的数据操作
*
* @param redisTemplate
* @return
*/
@Bean
public
ListOperations
<
String
,
Object
>
listOperations
(
RedisTemplate
<
String
,
Object
>
redisTemplate
)
{
return
redisTemplate
.
opsForList
();
}
/**
* 对无序集合类型的数据操作
*
* @param redisTemplate
* @return
*/
@Bean
public
SetOperations
<
String
,
Object
>
setOperations
(
RedisTemplate
<
String
,
Object
>
redisTemplate
)
{
return
redisTemplate
.
opsForSet
();
}
/**
* 对有序集合类型的数据操作
*
* @param redisTemplate
* @return
*/
@Bean
public
ZSetOperations
<
String
,
Object
>
zSetOperations
(
RedisTemplate
<
String
,
Object
>
redisTemplate
)
{
return
redisTemplate
.
opsForZSet
();
}
}
src/main/java/cn/timer/api/utils/redis/RedisUtil.java
0 → 100644
View file @
d190c149
package
cn
.
timer
.
api
.
utils
.
redis
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.redis.core.BoundListOperations
;
import
org.springframework.data.redis.core.RedisTemplate
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.CollectionUtils
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.concurrent.TimeUnit
;
/**
* redisTemplate封装
*
*/
@Component
public
class
RedisUtil
{
@Autowired
private
RedisTemplate
<
String
,
Object
>
redisTemplate
;
public
RedisUtil
(
RedisTemplate
<
String
,
Object
>
redisTemplate
)
{
this
.
redisTemplate
=
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
Object
get
(
String
key
){
return
key
==
null
?
null
:
redisTemplate
.
opsForValue
().
get
(
key
);
}
/**
* 普通缓存放入
* @param key 键
* @param value 值
* @return true成功 false失败
*/
public
boolean
set
(
String
key
,
Object
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
,
Object
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 delta 要增加几(大于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 delta 要减少几(小于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
,
Object
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
,
Object
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
<
Object
>
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
,
Object
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
,
Object
...
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
,
Object
...
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
<
Object
>
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 键
* @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 值
* @return
*/
public
boolean
lSet
(
String
key
,
Object
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
,
Object
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 值
* @return
*/
public
boolean
lSet
(
String
key
,
List
<
Object
>
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
<
Object
>
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
,
Object
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
,
Object
value
)
{
try
{
Long
remove
=
redisTemplate
.
opsForList
().
remove
(
key
,
count
,
value
);
return
remove
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
return
0
;
}
}
/**
* 模糊查询获取key值
* @param pattern
* @return
*/
public
Set
keys
(
String
pattern
){
return
redisTemplate
.
keys
(
pattern
);
}
/**
* 使用Redis的消息队列
* @param channel
* @param message 消息内容
*/
public
void
convertAndSend
(
String
channel
,
Object
message
){
redisTemplate
.
convertAndSend
(
channel
,
message
);
}
//=========BoundListOperations 用法 start============
/**
*将数据添加到Redis的list中(从右边添加)
* @param listKey
* @param expireEnum 有效期的枚举类
* @param values 待添加的数据
*/
public
void
addToListRight
(
String
listKey
,
Status
.
ExpireEnum
expireEnum
,
Object
...
values
)
{
//绑定操作
BoundListOperations
<
String
,
Object
>
boundValueOperations
=
redisTemplate
.
boundListOps
(
listKey
);
//插入数据
boundValueOperations
.
rightPushAll
(
values
);
//设置过期时间
boundValueOperations
.
expire
(
expireEnum
.
getTime
(),
expireEnum
.
getTimeUnit
());
}
/**
* 根据起始结束序号遍历Redis中的list
* @param listKey
* @param start 起始序号
* @param end 结束序号
* @return
*/
public
List
<
Object
>
rangeList
(
String
listKey
,
long
start
,
long
end
)
{
//绑定操作
BoundListOperations
<
String
,
Object
>
boundValueOperations
=
redisTemplate
.
boundListOps
(
listKey
);
//查询数据
return
boundValueOperations
.
range
(
start
,
end
);
}
/**
* 弹出右边的值 --- 并且移除这个值
* @param listKey
*/
public
Object
rifhtPop
(
String
listKey
){
//绑定操作
BoundListOperations
<
String
,
Object
>
boundValueOperations
=
redisTemplate
.
boundListOps
(
listKey
);
return
boundValueOperations
.
rightPop
();
}
//=========BoundListOperations 用法 End============
}
src/main/java/cn/timer/api/utils/redis/Status.java
0 → 100644
View file @
d190c149
package
cn
.
timer
.
api
.
utils
.
redis
;
import
java.util.concurrent.TimeUnit
;
/**
* 状态枚举
* @program: dgpoms-server-root
* @Date: 2018/12/27 11:40
* @Author: Mr.Zheng
* @Description:
*/
public
abstract
class
Status
{
/**
* 过期时间相关枚举
*/
public
static
enum
ExpireEnum
{
//未读消息的有效期为30天
UNREAD_MSG
(
30L
,
TimeUnit
.
DAYS
)
;
/**
* 过期时间
*/
private
Long
time
;
/**
* 时间单位
*/
private
TimeUnit
timeUnit
;
ExpireEnum
(
Long
time
,
TimeUnit
timeUnit
)
{
this
.
time
=
time
;
this
.
timeUnit
=
timeUnit
;
}
public
Long
getTime
()
{
return
time
;
}
public
TimeUnit
getTimeUnit
()
{
return
timeUnit
;
}
}
}
src/main/resources/application-dev.yml
View file @
d190c149
...
...
@@ -87,6 +87,24 @@ spring:
height
:
76
# Height of the banner image in chars (default based on image height).
margin
:
2
# Left hand image margin in chars.
invert
:
false
# Whether images should be inverted for dark terminal themes.
redis
:
database
:
4
# Redis数据库索引(默认为0),如果设置为1,那么存入的key-value都存放在select 1中
host
:
47.115.147.241
port
:
7788
password
:
(!0YouLingRcRedis0!)
max-wait
:
30000
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-active
:
100
# 连接池最大连接数(使用负值表示没有限制)
max-idle
:
20
# 连接池中的最大空闲连接
min-idle
:
0
# 连接池中的最小空闲连接
timeout
:
5000
# 连接超时
#password: 123456 # 密码,默认密码为空
#cluster: # 集群配置
#nodes: 127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384,127.0.0.1:6385,127.0.0.1:6386
#max-redirects: 2 # 最大重定向次数
devtools
:
restart
:
poll-interval
:
3000ms
quiet-period
:
2999ms
mail
:
port
:
465
...
...
src/main/resources/application-pro.yml
View file @
d190c149
...
...
@@ -105,6 +105,24 @@ spring:
socketFactory
:
port
:
465
class
:
javax.net.ssl.SSLSocketFactory
redis
:
database
:
5
# Redis数据库索引(默认为0),如果设置为1,那么存入的key-value都存放在select 1中
host
:
47.115.147.241
port
:
7788
password
:
(!0YouLingRcRedis0!)
max-wait
:
30000
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-active
:
100
# 连接池最大连接数(使用负值表示没有限制)
max-idle
:
20
# 连接池中的最大空闲连接
min-idle
:
0
# 连接池中的最小空闲连接
timeout
:
5000
# 连接超时
#password: 123456 # 密码,默认密码为空
#cluster: # 集群配置
#nodes: 127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384,127.0.0.1:6385,127.0.0.1:6386
#max-redirects: 2 # 最大重定向次数
devtools
:
restart
:
poll-interval
:
3000ms
quiet-period
:
2999ms
# mybatis-plus
mybatis-plus
:
...
...
src/main/resources/application-test.yml
View file @
d190c149
...
...
@@ -104,6 +104,24 @@ spring:
socketFactory
:
port
:
465
class
:
javax.net.ssl.SSLSocketFactor
redis
:
database
:
6
# Redis数据库索引(默认为0),如果设置为1,那么存入的key-value都存放在select 1中
host
:
47.115.147.241
port
:
7788
password
:
(!0YouLingRcRedis0!)
max-wait
:
30000
# 连接池最大阻塞等待时间(使用负值表示没有限制)
max-active
:
100
# 连接池最大连接数(使用负值表示没有限制)
max-idle
:
20
# 连接池中的最大空闲连接
min-idle
:
0
# 连接池中的最小空闲连接
timeout
:
5000
# 连接超时
#password: 123456 # 密码,默认密码为空
#cluster: # 集群配置
#nodes: 127.0.0.1:6381,127.0.0.1:6382,127.0.0.1:6383,127.0.0.1:6384,127.0.0.1:6385,127.0.0.1:6386
#max-redirects: 2 # 最大重定向次数
devtools
:
restart
:
poll-interval
:
3000ms
quiet-period
:
2999ms
# mybatis-plus
mybatis-plus
:
...
...
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