feat: echache调整未redis
parent
58d4f4c9b6
commit
b37441d8de
@ -0,0 +1,47 @@
|
|||||||
|
######################################################################
|
||||||
|
# Build Tools
|
||||||
|
|
||||||
|
.gradle
|
||||||
|
/build/
|
||||||
|
!gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
target/
|
||||||
|
!.mvn/wrapper/maven-wrapper.jar
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
# IDE
|
||||||
|
|
||||||
|
### STS ###
|
||||||
|
.apt_generated
|
||||||
|
.classpath
|
||||||
|
.factorypath
|
||||||
|
.project
|
||||||
|
.settings
|
||||||
|
.springBeans
|
||||||
|
|
||||||
|
### IntelliJ IDEA ###
|
||||||
|
.idea
|
||||||
|
*.iws
|
||||||
|
*.iml
|
||||||
|
*.ipr
|
||||||
|
|
||||||
|
### JRebel ###
|
||||||
|
rebel.xml
|
||||||
|
|
||||||
|
### NetBeans ###
|
||||||
|
nbproject/private/
|
||||||
|
build/*
|
||||||
|
nbbuild/
|
||||||
|
dist/
|
||||||
|
nbdist/
|
||||||
|
.nb-gradle/
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
# Others
|
||||||
|
*.log
|
||||||
|
*.xml.versionsBackup
|
||||||
|
*.swp
|
||||||
|
|
||||||
|
!*/build/*.java
|
||||||
|
!*/build/*.html
|
||||||
|
!*/build/*.xml
|
@ -1,120 +1,120 @@
|
|||||||
//package com.ruoyi.web.controller.monitor;
|
package com.ruoyi.web.controller.monitor;
|
||||||
//
|
|
||||||
//import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
//import java.util.Collection;
|
import java.util.Collection;
|
||||||
//import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
//import java.util.List;
|
import java.util.List;
|
||||||
//import java.util.Map;
|
import java.util.Map;
|
||||||
//import java.util.Properties;
|
import java.util.Properties;
|
||||||
//import java.util.Set;
|
import java.util.Set;
|
||||||
//import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
//import org.springframework.data.redis.core.RedisCallback;
|
import org.springframework.data.redis.core.RedisCallback;
|
||||||
//import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
//import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
//import org.springframework.web.bind.annotation.DeleteMapping;
|
import org.springframework.web.bind.annotation.DeleteMapping;
|
||||||
//import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
//import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
//import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
//import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
//import com.ruoyi.common.constant.CacheConstants;
|
import com.ruoyi.common.constant.CacheConstants;
|
||||||
//import com.ruoyi.common.core.domain.AjaxResult;
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
//import com.ruoyi.common.utils.StringUtils;
|
import com.ruoyi.common.utils.StringUtils;
|
||||||
//import com.ruoyi.system.domain.SysCache;
|
import com.ruoyi.system.domain.SysCache;
|
||||||
//
|
|
||||||
///**
|
/**
|
||||||
// * 缓存监控
|
* 缓存监控
|
||||||
// *
|
*
|
||||||
// * @author ruoyi
|
* @author ruoyi
|
||||||
// */
|
*/
|
||||||
//@RestController
|
@RestController
|
||||||
//@RequestMapping("/monitor/cache")
|
@RequestMapping("/monitor/cache")
|
||||||
//public class CacheController
|
public class CacheController
|
||||||
//{
|
{
|
||||||
// @Autowired
|
@Autowired
|
||||||
// private RedisTemplate<String, String> redisTemplate;
|
private RedisTemplate<String, String> redisTemplate;
|
||||||
//
|
|
||||||
// private final static List<SysCache> caches = new ArrayList<SysCache>();
|
private final static List<SysCache> caches = new ArrayList<SysCache>();
|
||||||
// {
|
{
|
||||||
// caches.add(new SysCache(CacheConstants.LOGIN_TOKEN_KEY, "用户信息"));
|
caches.add(new SysCache(CacheConstants.LOGIN_TOKEN_KEY, "用户信息"));
|
||||||
// caches.add(new SysCache(CacheConstants.SYS_CONFIG_KEY, "配置信息"));
|
caches.add(new SysCache(CacheConstants.SYS_CONFIG_KEY, "配置信息"));
|
||||||
// caches.add(new SysCache(CacheConstants.SYS_DICT_KEY, "数据字典"));
|
caches.add(new SysCache(CacheConstants.SYS_DICT_KEY, "数据字典"));
|
||||||
// caches.add(new SysCache(CacheConstants.CAPTCHA_CODE_KEY, "验证码"));
|
caches.add(new SysCache(CacheConstants.CAPTCHA_CODE_KEY, "验证码"));
|
||||||
// caches.add(new SysCache(CacheConstants.REPEAT_SUBMIT_KEY, "防重提交"));
|
caches.add(new SysCache(CacheConstants.REPEAT_SUBMIT_KEY, "防重提交"));
|
||||||
// caches.add(new SysCache(CacheConstants.RATE_LIMIT_KEY, "限流处理"));
|
caches.add(new SysCache(CacheConstants.RATE_LIMIT_KEY, "限流处理"));
|
||||||
// caches.add(new SysCache(CacheConstants.PWD_ERR_CNT_KEY, "密码错误次数"));
|
caches.add(new SysCache(CacheConstants.PWD_ERR_CNT_KEY, "密码错误次数"));
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
||||||
// @GetMapping()
|
@GetMapping()
|
||||||
// public AjaxResult getInfo() throws Exception
|
public AjaxResult getInfo() throws Exception
|
||||||
// {
|
{
|
||||||
// Properties info = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info());
|
Properties info = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info());
|
||||||
// Properties commandStats = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info("commandstats"));
|
Properties commandStats = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info("commandstats"));
|
||||||
// Object dbSize = redisTemplate.execute((RedisCallback<Object>) connection -> connection.dbSize());
|
Object dbSize = redisTemplate.execute((RedisCallback<Object>) connection -> connection.dbSize());
|
||||||
//
|
|
||||||
// Map<String, Object> result = new HashMap<>(3);
|
Map<String, Object> result = new HashMap<>(3);
|
||||||
// result.put("info", info);
|
result.put("info", info);
|
||||||
// result.put("dbSize", dbSize);
|
result.put("dbSize", dbSize);
|
||||||
//
|
|
||||||
// List<Map<String, String>> pieList = new ArrayList<>();
|
List<Map<String, String>> pieList = new ArrayList<>();
|
||||||
// commandStats.stringPropertyNames().forEach(key -> {
|
commandStats.stringPropertyNames().forEach(key -> {
|
||||||
// Map<String, String> data = new HashMap<>(2);
|
Map<String, String> data = new HashMap<>(2);
|
||||||
// String property = commandStats.getProperty(key);
|
String property = commandStats.getProperty(key);
|
||||||
// data.put("name", StringUtils.removeStart(key, "cmdstat_"));
|
data.put("name", StringUtils.removeStart(key, "cmdstat_"));
|
||||||
// data.put("value", StringUtils.substringBetween(property, "calls=", ",usec"));
|
data.put("value", StringUtils.substringBetween(property, "calls=", ",usec"));
|
||||||
// pieList.add(data);
|
pieList.add(data);
|
||||||
// });
|
});
|
||||||
// result.put("commandStats", pieList);
|
result.put("commandStats", pieList);
|
||||||
// return AjaxResult.success(result);
|
return AjaxResult.success(result);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
||||||
// @GetMapping("/getNames")
|
@GetMapping("/getNames")
|
||||||
// public AjaxResult cache()
|
public AjaxResult cache()
|
||||||
// {
|
{
|
||||||
// return AjaxResult.success(caches);
|
return AjaxResult.success(caches);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
||||||
// @GetMapping("/getKeys/{cacheName}")
|
@GetMapping("/getKeys/{cacheName}")
|
||||||
// public AjaxResult getCacheKeys(@PathVariable String cacheName)
|
public AjaxResult getCacheKeys(@PathVariable String cacheName)
|
||||||
// {
|
{
|
||||||
// Set<String> cacheKeys = redisTemplate.keys(cacheName + "*");
|
Set<String> cacheKeys = redisTemplate.keys(cacheName + "*");
|
||||||
// return AjaxResult.success(cacheKeys);
|
return AjaxResult.success(cacheKeys);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
||||||
// @GetMapping("/getValue/{cacheName}/{cacheKey}")
|
@GetMapping("/getValue/{cacheName}/{cacheKey}")
|
||||||
// public AjaxResult getCacheValue(@PathVariable String cacheName, @PathVariable String cacheKey)
|
public AjaxResult getCacheValue(@PathVariable String cacheName, @PathVariable String cacheKey)
|
||||||
// {
|
{
|
||||||
// String cacheValue = redisTemplate.opsForValue().get(cacheKey);
|
String cacheValue = redisTemplate.opsForValue().get(cacheKey);
|
||||||
// SysCache sysCache = new SysCache(cacheName, cacheKey, cacheValue);
|
SysCache sysCache = new SysCache(cacheName, cacheKey, cacheValue);
|
||||||
// return AjaxResult.success(sysCache);
|
return AjaxResult.success(sysCache);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
||||||
// @DeleteMapping("/clearCacheName/{cacheName}")
|
@DeleteMapping("/clearCacheName/{cacheName}")
|
||||||
// public AjaxResult clearCacheName(@PathVariable String cacheName)
|
public AjaxResult clearCacheName(@PathVariable String cacheName)
|
||||||
// {
|
{
|
||||||
// Collection<String> cacheKeys = redisTemplate.keys(cacheName + "*");
|
Collection<String> cacheKeys = redisTemplate.keys(cacheName + "*");
|
||||||
// redisTemplate.delete(cacheKeys);
|
redisTemplate.delete(cacheKeys);
|
||||||
// return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
||||||
// @DeleteMapping("/clearCacheKey/{cacheKey}")
|
@DeleteMapping("/clearCacheKey/{cacheKey}")
|
||||||
// public AjaxResult clearCacheKey(@PathVariable String cacheKey)
|
public AjaxResult clearCacheKey(@PathVariable String cacheKey)
|
||||||
// {
|
{
|
||||||
// redisTemplate.delete(cacheKey);
|
redisTemplate.delete(cacheKey);
|
||||||
// return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')")
|
||||||
// @DeleteMapping("/clearCacheAll")
|
@DeleteMapping("/clearCacheAll")
|
||||||
// public AjaxResult clearCacheAll()
|
public AjaxResult clearCacheAll()
|
||||||
// {
|
{
|
||||||
// Collection<String> cacheKeys = redisTemplate.keys("*");
|
Collection<String> cacheKeys = redisTemplate.keys("*");
|
||||||
// redisTemplate.delete(cacheKeys);
|
redisTemplate.delete(cacheKeys);
|
||||||
// return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
// }
|
}
|
||||||
//}
|
}
|
||||||
|
@ -1,48 +1,48 @@
|
|||||||
//package com.ruoyi.framework.config;
|
package com.ruoyi.framework.config;
|
||||||
//
|
|
||||||
//import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
//import org.springframework.data.redis.serializer.RedisSerializer;
|
import org.springframework.data.redis.serializer.RedisSerializer;
|
||||||
//import org.springframework.data.redis.serializer.SerializationException;
|
import org.springframework.data.redis.serializer.SerializationException;
|
||||||
//import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSON;
|
||||||
//import com.alibaba.fastjson2.JSONReader;
|
import com.alibaba.fastjson2.JSONReader;
|
||||||
//import com.alibaba.fastjson2.JSONWriter;
|
import com.alibaba.fastjson2.JSONWriter;
|
||||||
//
|
|
||||||
///**
|
/**
|
||||||
// * Redis使用FastJson序列化
|
* Redis使用FastJson序列化
|
||||||
// *
|
*
|
||||||
// * @author ruoyi
|
* @author ruoyi
|
||||||
// */
|
*/
|
||||||
//public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T>
|
public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T>
|
||||||
//{
|
{
|
||||||
// public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
|
public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
|
||||||
//
|
|
||||||
// private Class<T> clazz;
|
private Class<T> clazz;
|
||||||
//
|
|
||||||
// public FastJson2JsonRedisSerializer(Class<T> clazz)
|
public FastJson2JsonRedisSerializer(Class<T> clazz)
|
||||||
// {
|
{
|
||||||
// super();
|
super();
|
||||||
// this.clazz = clazz;
|
this.clazz = clazz;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @Override
|
@Override
|
||||||
// public byte[] serialize(T t) throws SerializationException
|
public byte[] serialize(T t) throws SerializationException
|
||||||
// {
|
{
|
||||||
// if (t == null)
|
if (t == null)
|
||||||
// {
|
{
|
||||||
// return new byte[0];
|
return new byte[0];
|
||||||
// }
|
}
|
||||||
// return JSON.toJSONString(t, JSONWriter.Feature.WriteClassName).getBytes(DEFAULT_CHARSET);
|
return JSON.toJSONString(t, JSONWriter.Feature.WriteClassName).getBytes(DEFAULT_CHARSET);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @Override
|
@Override
|
||||||
// public T deserialize(byte[] bytes) throws SerializationException
|
public T deserialize(byte[] bytes) throws SerializationException
|
||||||
// {
|
{
|
||||||
// if (bytes == null || bytes.length <= 0)
|
if (bytes == null || bytes.length <= 0)
|
||||||
// {
|
{
|
||||||
// return null;
|
return null;
|
||||||
// }
|
}
|
||||||
// String str = new String(bytes, DEFAULT_CHARSET);
|
String str = new String(bytes, DEFAULT_CHARSET);
|
||||||
//
|
|
||||||
// return JSON.parseObject(str, clazz, JSONReader.Feature.SupportAutoType);
|
return JSON.parseObject(str, clazz, JSONReader.Feature.SupportAutoType);
|
||||||
// }
|
}
|
||||||
//}
|
}
|
||||||
|
@ -1,69 +1,69 @@
|
|||||||
//package com.ruoyi.framework.config;
|
package com.ruoyi.framework.config;
|
||||||
//
|
|
||||||
//import org.springframework.cache.annotation.CachingConfigurerSupport;
|
import org.springframework.cache.annotation.CachingConfigurerSupport;
|
||||||
//import org.springframework.cache.annotation.EnableCaching;
|
import org.springframework.cache.annotation.EnableCaching;
|
||||||
//import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
//import org.springframework.context.annotation.Configuration;
|
import org.springframework.context.annotation.Configuration;
|
||||||
//import org.springframework.data.redis.connection.RedisConnectionFactory;
|
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||||
//import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
//import org.springframework.data.redis.core.script.DefaultRedisScript;
|
import org.springframework.data.redis.core.script.DefaultRedisScript;
|
||||||
//import org.springframework.data.redis.serializer.StringRedisSerializer;
|
import org.springframework.data.redis.serializer.StringRedisSerializer;
|
||||||
//
|
|
||||||
///**
|
/**
|
||||||
// * redis配置
|
* redis配置
|
||||||
// *
|
*
|
||||||
// * @author ruoyi
|
* @author ruoyi
|
||||||
// */
|
*/
|
||||||
//@Configuration
|
@Configuration
|
||||||
//@EnableCaching
|
@EnableCaching
|
||||||
//public class RedisConfig extends CachingConfigurerSupport
|
public class RedisConfig extends CachingConfigurerSupport
|
||||||
//{
|
{
|
||||||
// @Bean
|
@Bean
|
||||||
// @SuppressWarnings(value = { "unchecked", "rawtypes" })
|
@SuppressWarnings(value = { "unchecked", "rawtypes" })
|
||||||
// public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory)
|
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory)
|
||||||
// {
|
{
|
||||||
// RedisTemplate<Object, Object> template = new RedisTemplate<>();
|
RedisTemplate<Object, Object> template = new RedisTemplate<>();
|
||||||
// template.setConnectionFactory(connectionFactory);
|
template.setConnectionFactory(connectionFactory);
|
||||||
//
|
|
||||||
// FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class);
|
FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class);
|
||||||
//
|
|
||||||
// // 使用StringRedisSerializer来序列化和反序列化redis的key值
|
// 使用StringRedisSerializer来序列化和反序列化redis的key值
|
||||||
// template.setKeySerializer(new StringRedisSerializer());
|
template.setKeySerializer(new StringRedisSerializer());
|
||||||
// template.setValueSerializer(serializer);
|
template.setValueSerializer(serializer);
|
||||||
//
|
|
||||||
// // Hash的key也采用StringRedisSerializer的序列化方式
|
// Hash的key也采用StringRedisSerializer的序列化方式
|
||||||
// template.setHashKeySerializer(new StringRedisSerializer());
|
template.setHashKeySerializer(new StringRedisSerializer());
|
||||||
// template.setHashValueSerializer(serializer);
|
template.setHashValueSerializer(serializer);
|
||||||
//
|
|
||||||
// template.afterPropertiesSet();
|
template.afterPropertiesSet();
|
||||||
// return template;
|
return template;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// @Bean
|
@Bean
|
||||||
// public DefaultRedisScript<Long> limitScript()
|
public DefaultRedisScript<Long> limitScript()
|
||||||
// {
|
{
|
||||||
// DefaultRedisScript<Long> redisScript = new DefaultRedisScript<>();
|
DefaultRedisScript<Long> redisScript = new DefaultRedisScript<>();
|
||||||
// redisScript.setScriptText(limitScriptText());
|
redisScript.setScriptText(limitScriptText());
|
||||||
// redisScript.setResultType(Long.class);
|
redisScript.setResultType(Long.class);
|
||||||
// return redisScript;
|
return redisScript;
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// /**
|
/**
|
||||||
// * 限流脚本
|
* 限流脚本
|
||||||
// */
|
*/
|
||||||
// private String limitScriptText()
|
private String limitScriptText()
|
||||||
// {
|
{
|
||||||
// return "local key = KEYS[1]\n" +
|
return "local key = KEYS[1]\n" +
|
||||||
// "local count = tonumber(ARGV[1])\n" +
|
"local count = tonumber(ARGV[1])\n" +
|
||||||
// "local time = tonumber(ARGV[2])\n" +
|
"local time = tonumber(ARGV[2])\n" +
|
||||||
// "local current = redis.call('get', key);\n" +
|
"local current = redis.call('get', key);\n" +
|
||||||
// "if current and tonumber(current) > count then\n" +
|
"if current and tonumber(current) > count then\n" +
|
||||||
// " return tonumber(current);\n" +
|
" return tonumber(current);\n" +
|
||||||
// "end\n" +
|
"end\n" +
|
||||||
// "current = redis.call('incr', key)\n" +
|
"current = redis.call('incr', key)\n" +
|
||||||
// "if tonumber(current) == 1 then\n" +
|
"if tonumber(current) == 1 then\n" +
|
||||||
// " redis.call('expire', key, time)\n" +
|
" redis.call('expire', key, time)\n" +
|
||||||
// "end\n" +
|
"end\n" +
|
||||||
// "return tonumber(current);";
|
"return tonumber(current);";
|
||||||
// }
|
}
|
||||||
//}
|
}
|
||||||
|
Loading…
Reference in New Issue