Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
33e5c2a7
提交
33e5c2a7
authored
7月 08, 2022
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Redis 缓存的查询与删除
上级
30e323dc
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
124 行增加
和
9 行删除
+124
-9
RedisController.java
.../module/infra/controller/admin/redis/RedisController.java
+67
-7
RedisKeyDefineRespVO.java
...infra/controller/admin/redis/vo/RedisKeyDefineRespVO.java
+36
-0
RedisKeyValueRespVO.java
.../infra/controller/admin/redis/vo/RedisKeyValueRespVO.java
+19
-0
RedisConvert.java
...ocoder/yudao/module/infra/convert/redis/RedisConvert.java
+2
-2
没有找到文件。
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/redis/RedisController.java
浏览文件 @
33e5c2a7
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
controller
.
admin
.
redis
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.util.StrUtil
;
import
cn.iocoder.yudao.framework.common.pojo.CommonResult
;
import
cn.iocoder.yudao.framework.redis.core.RedisKeyDefine
;
import
cn.iocoder.yudao.framework.redis.core.RedisKeyRegistry
;
import
cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisKeyRespVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisKeyDefineRespVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisKeyValueRespVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisMonitorRespVO
;
import
cn.iocoder.yudao.module.infra.convert.redis.RedisConvert
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiImplicitParam
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.data.redis.connection.RedisServerCommands
;
import
org.springframework.data.redis.core.Cursor
;
import
org.springframework.data.redis.core.RedisCallback
;
import
org.springframework.data.redis.core.ScanOptions
;
import
org.springframework.data.redis.core.StringRedisTemplate
;
import
org.springframework.security.access.prepost.PreAuthorize
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
import
java.util.LinkedHashSet
;
import
java.util.List
;
import
java.util.Properties
;
import
java.util.Set
;
import
static
cn
.
iocoder
.
yudao
.
framework
.
common
.
pojo
.
CommonResult
.
success
;
...
...
@@ -44,12 +50,66 @@ public class RedisController {
return
success
(
RedisConvert
.
INSTANCE
.
build
(
info
,
dbSize
,
commandStats
));
}
@GetMapping
(
"/get-key-list"
)
@ApiOperation
(
"获得 Redis Key 列表"
)
@GetMapping
(
"/get-key-
define-
list"
)
@ApiOperation
(
"获得 Redis Key
模板
列表"
)
@PreAuthorize
(
"@ss.hasPermission('infra:redis:get-key-list')"
)
public
CommonResult
<
List
<
RedisKey
RespVO
>>
getKey
List
()
{
public
CommonResult
<
List
<
RedisKey
DefineRespVO
>>
getKeyDefine
List
()
{
List
<
RedisKeyDefine
>
keyDefines
=
RedisKeyRegistry
.
list
();
return
success
(
RedisConvert
.
INSTANCE
.
convertList
(
keyDefines
));
}
@GetMapping
(
"/get-key-list"
)
@ApiOperation
(
"获得 Redis keys 键名列表"
)
@ApiImplicitParam
(
name
=
"keyTemplate"
,
value
=
"Redis Key 定义"
,
example
=
"true"
,
dataTypeClass
=
String
.
class
)
@PreAuthorize
(
"@ss.hasPermission('infra:redis:get-key-list')"
)
public
CommonResult
<
Set
<
String
>>
getKeyDefineList
(
@RequestParam
(
"keyTemplate"
)
String
keyTemplate
)
{
return
success
(
getKeyDefineList0
(
keyTemplate
));
}
private
Set
<
String
>
getKeyDefineList0
(
String
keyTemplate
)
{
// key 格式化
String
key
=
StrUtil
.
replace
(
keyTemplate
,
"%[s|c|b|d|x|o|f|a|e|g]"
,
parameter
->
"*"
);
// scan 扫描 key
Set
<
String
>
keys
=
new
LinkedHashSet
<>();
stringRedisTemplate
.
execute
((
RedisCallback
<
Set
<
String
>>)
connection
->
{
try
(
Cursor
<
byte
[]>
cursor
=
connection
.
scan
(
ScanOptions
.
scanOptions
().
match
(
key
).
count
(
100
).
build
()))
{
cursor
.
forEachRemaining
(
value
->
keys
.
add
(
StrUtil
.
utf8Str
(
value
)));
}
catch
(
Exception
e
)
{
throw
new
RuntimeException
(
e
);
}
return
keys
;
});
return
keys
;
}
@GetMapping
(
"/get-key-value"
)
@ApiOperation
(
"获得 Redis key 内容"
)
@ApiImplicitParam
(
name
=
"key"
,
value
=
"Redis Key"
,
example
=
"oauth2_access_token:233"
,
dataTypeClass
=
String
.
class
)
@PreAuthorize
(
"@ss.hasPermission('infra:redis:get-key-list')"
)
public
CommonResult
<
RedisKeyValueRespVO
>
getKeyValue
(
@RequestParam
(
"key"
)
String
key
)
{
String
value
=
stringRedisTemplate
.
opsForValue
().
get
(
key
);
return
success
(
new
RedisKeyValueRespVO
(
key
,
value
));
}
@DeleteMapping
(
"/delete-key"
)
@ApiOperation
(
"删除 Redis Key"
)
@ApiImplicitParam
(
name
=
"key"
,
value
=
"Redis Key"
,
example
=
"oauth2_access_token:233"
,
dataTypeClass
=
String
.
class
)
@PreAuthorize
(
"@ss.hasPermission('infra:redis:get-key-list')"
)
public
CommonResult
<
Boolean
>
deleteKey
(
@RequestParam
(
"key"
)
String
key
)
{
stringRedisTemplate
.
delete
(
key
);
return
success
(
Boolean
.
TRUE
);
}
@DeleteMapping
(
"/delete-keys"
)
@ApiOperation
(
"删除 Redis Key 根据模板"
)
@ApiImplicitParam
(
name
=
"keyTemplate"
,
value
=
"Redis Key 定义"
,
example
=
"true"
,
dataTypeClass
=
String
.
class
)
@PreAuthorize
(
"@ss.hasPermission('infra:redis:get-key-list')"
)
public
CommonResult
<
Boolean
>
deleteKeys
(
@RequestParam
(
"keyTemplate"
)
String
keyTemplate
)
{
Set
<
String
>
keys
=
getKeyDefineList0
(
keyTemplate
);
if
(
CollUtil
.
isNotEmpty
(
keys
))
{
stringRedisTemplate
.
delete
(
keys
);
}
return
success
(
Boolean
.
TRUE
);
}
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/redis/vo/RedisKeyDefineRespVO.java
0 → 100644
浏览文件 @
33e5c2a7
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
controller
.
admin
.
redis
.
vo
;
import
cn.iocoder.yudao.framework.redis.core.RedisKeyDefine
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
java.time.Duration
;
@ApiModel
(
"管理后台 - Redis Key 信息 Response VO"
)
@Data
@Builder
@AllArgsConstructor
public
class
RedisKeyDefineRespVO
{
@ApiModelProperty
(
value
=
"Key 模板"
,
required
=
true
,
example
=
"login_user:%s"
)
private
String
keyTemplate
;
@ApiModelProperty
(
value
=
"Key 类型的枚举"
,
required
=
true
,
example
=
"String"
)
private
RedisKeyDefine
.
KeyTypeEnum
keyType
;
@ApiModelProperty
(
value
=
"Value 类型"
,
required
=
true
,
example
=
"java.lang.String"
)
private
Class
<?>
valueType
;
@ApiModelProperty
(
value
=
"超时类型"
,
required
=
true
,
example
=
"1"
)
private
RedisKeyDefine
.
TimeoutTypeEnum
timeoutType
;
@ApiModelProperty
(
value
=
"过期时间,单位:毫秒"
,
required
=
true
,
example
=
"1024"
)
private
Duration
timeout
;
@ApiModelProperty
(
value
=
"备注"
,
required
=
true
,
example
=
"啦啦啦啦~"
)
private
String
memo
;
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/redis/vo/RedisKeyValueRespVO.java
0 → 100644
浏览文件 @
33e5c2a7
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
controller
.
admin
.
redis
.
vo
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
@ApiModel
(
"管理后台 - 单个 Redis Key Value Response VO"
)
@Data
@AllArgsConstructor
public
class
RedisKeyValueRespVO
{
@ApiModelProperty
(
value
=
"c5f6990767804a928f4bb96ca249febf"
,
required
=
true
,
example
=
"String"
)
private
String
key
;
@ApiModelProperty
(
required
=
true
,
example
=
"String"
)
private
String
value
;
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/redis/RedisConvert.java
浏览文件 @
33e5c2a7
...
...
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.convert.redis;
import
cn.hutool.core.util.StrUtil
;
import
cn.iocoder.yudao.framework.redis.core.RedisKeyDefine
;
import
cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisKeyRespVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisKey
Define
RespVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisMonitorRespVO
;
import
org.mapstruct.Mapper
;
import
org.mapstruct.factory.Mappers
;
...
...
@@ -29,6 +29,6 @@ public interface RedisConvert {
return
respVO
;
}
List
<
RedisKeyRespVO
>
convertList
(
List
<
RedisKeyDefine
>
list
);
List
<
RedisKey
Define
RespVO
>
convertList
(
List
<
RedisKeyDefine
>
list
);
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论