| | |
| | | package com.ruoyi.web.controller.monitor; |
| | | |
| | | import cn.dev33.satoken.annotation.SaCheckPermission; |
| | | import cn.hutool.core.collection.CollUtil; |
| | | import com.ruoyi.common.constant.CacheConstants; |
| | | import com.ruoyi.common.constant.CacheNames; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.utils.JsonUtils; |
| | | import com.ruoyi.common.utils.StringUtils; |
| | | import com.ruoyi.common.utils.redis.CacheUtils; |
| | | import com.ruoyi.common.utils.redis.RedisUtils; |
| | | import com.ruoyi.oss.constant.OssConstant; |
| | | import com.ruoyi.system.domain.SysCache; |
| | | import lombok.RequiredArgsConstructor; |
| | | import org.redisson.spring.data.connection.RedissonConnectionFactory; |
| | |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 缓存监控 |
| | |
| | | |
| | | static { |
| | | CACHES.add(new SysCache(CacheConstants.LOGIN_TOKEN_KEY, "用户信息")); |
| | | CACHES.add(new SysCache(CacheConstants.ONLINE_TOKEN_KEY, "在线用户")); |
| | | CACHES.add(new SysCache(CacheConstants.SYS_CONFIG_KEY, "配置信息")); |
| | | CACHES.add(new SysCache(CacheConstants.SYS_DICT_KEY, "数据字典")); |
| | | CACHES.add(new SysCache(CacheNames.ONLINE_TOKEN, "在线用户")); |
| | | CACHES.add(new SysCache(CacheNames.SYS_CONFIG, "配置信息")); |
| | | CACHES.add(new SysCache(CacheNames.SYS_DICT, "数据字典")); |
| | | CACHES.add(new SysCache(CacheConstants.CAPTCHA_CODE_KEY, "验证码")); |
| | | CACHES.add(new SysCache(CacheConstants.REPEAT_SUBMIT_KEY, "防重提交")); |
| | | CACHES.add(new SysCache(CacheConstants.RATE_LIMIT_KEY, "限流处理")); |
| | | CACHES.add(new SysCache(OssConstant.SYS_OSS_KEY, "OSS配置")); |
| | | CACHES.add(new SysCache(CacheNames.SYS_OSS_CONFIG, "OSS配置")); |
| | | CACHES.add(new SysCache(CacheConstants.PWD_ERR_CNT_KEY, "密码错误次数")); |
| | | } |
| | | |
| | |
| | | @SaCheckPermission("monitor:cache:list") |
| | | @GetMapping("/getKeys/{cacheName}") |
| | | public R<Collection<String>> getCacheKeys(@PathVariable String cacheName) { |
| | | Collection<String> cacheKeys = RedisUtils.keys(cacheName + "*"); |
| | | Collection<String> cacheKeys = new HashSet<>(0); |
| | | if (isCacheNames(cacheName)) { |
| | | Set<Object> keys = CacheUtils.keys(cacheName); |
| | | if (CollUtil.isNotEmpty(keys)) { |
| | | cacheKeys = keys.stream().map(Object::toString).collect(Collectors.toList()); |
| | | } |
| | | } else { |
| | | cacheKeys = RedisUtils.keys(cacheName + "*"); |
| | | } |
| | | return R.ok(cacheKeys); |
| | | } |
| | | |
| | |
| | | @SaCheckPermission("monitor:cache:list") |
| | | @GetMapping("/getValue/{cacheName}/{cacheKey}") |
| | | public R<SysCache> getCacheValue(@PathVariable String cacheName, @PathVariable String cacheKey) { |
| | | Object cacheValue = RedisUtils.getCacheObject(cacheKey); |
| | | Object cacheValue; |
| | | if (isCacheNames(cacheName)) { |
| | | cacheValue = CacheUtils.get(cacheName, cacheKey); |
| | | } else { |
| | | cacheValue = RedisUtils.getCacheObject(cacheKey); |
| | | } |
| | | SysCache sysCache = new SysCache(cacheName, cacheKey, JsonUtils.toJsonString(cacheValue)); |
| | | return R.ok(sysCache); |
| | | } |
| | |
| | | @SaCheckPermission("monitor:cache:list") |
| | | @DeleteMapping("/clearCacheName/{cacheName}") |
| | | public R<Void> clearCacheName(@PathVariable String cacheName) { |
| | | RedisUtils.deleteKeys(cacheName + "*"); |
| | | if (isCacheNames(cacheName)) { |
| | | CacheUtils.clear(cacheName); |
| | | } else { |
| | | RedisUtils.deleteKeys(cacheName + "*"); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | |
| | | * @param cacheKey key名 |
| | | */ |
| | | @SaCheckPermission("monitor:cache:list") |
| | | @DeleteMapping("/clearCacheKey/{cacheKey}") |
| | | public R<Void> clearCacheKey(@PathVariable String cacheKey) { |
| | | RedisUtils.deleteObject(cacheKey); |
| | | @DeleteMapping("/clearCacheKey/{cacheName}/{cacheKey}") |
| | | public R<Void> clearCacheKey(@PathVariable String cacheName, @PathVariable String cacheKey) { |
| | | if (isCacheNames(cacheName)) { |
| | | CacheUtils.evict(cacheName, cacheKey); |
| | | } else { |
| | | RedisUtils.deleteObject(cacheKey); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | |
| | | return R.ok(); |
| | | } |
| | | |
| | | private boolean isCacheNames(String cacheName) { |
| | | return !StringUtils.contains(cacheName, ":"); |
| | | } |
| | | } |