代码拉取完成,页面将自动刷新
使用方法:
Method to use:
1. 引入jar包
import the jar with maven
<dependency>
<groupId>com.gitee.fufu669</groupId>
<artifactId>cache-fetch-later</artifactId>
<version>6.6.6025</version>
</dependency>
2. 在bootstrap.yml增加配置
add configuration in bootstrap.yml
redis:
hostAndPorts: 166.66.6.166:6379,166.66.6.167:6379
maxTotal: 200
maxIdle: 200
minIdle: 8
maxWaitMillis: 3000
testOnBorrow: true
lifo: true
testOnReturn: true
password: zzzzzz
keyPrefix: com.gitee.fufu669
#请更改上面这个keyPrefix,这个是在redis里面存入key时前面增加的前缀。
threadpooltaskexecutor:
corepoolsize: 6
maxpoolsize: 200
queuecapacity: 100000
keepaliveseconds: 60
threadnameprefix: threadPoolTaskExecutor-
#此框架用到了线程池。所以如果使用了自己的线程池,请在注入时,要用@Qualifier来区分.
3. 在springboot的application上面加上一个注解@EnableCacheFetchLater
add annotation @EnableCacheFetchLater on application.java of springboot
@EnableCacheFetchLater
4. 然后就可以在任意method上面使用上面使用下面4个标签。
Then you can use below 4 annotation on any method
@CacheFetchLater : redis里面有数据,就直接返回,并在加一把分布式锁后,起多线程更新数据。redis里面没有数据,就从方法里取数据,并存入redis。
if redis has data, return value in redis and update value with multiple thread. if redis has no data, then get from method, set to redis.
有2个参数,
refreshSeconds=30(默认是-1),意味着分布式锁的过期时间是30秒,意思是30秒内如果数据没有抓完成,是不允许再次重入的。如果已经完成还是允许继续抓数据的。如果值是-1或小于0,则不加分布式锁。
expireSeconds=666666(默认是666666),意味着这个缓存过期时间是666666秒,也就是一周。
lockSeconds=60(默认是60),更新缓存前加的分布式锁的过期时间,默认是60,意思是分布式锁60秒过期。
@CacheMockFetchLater : redis里面有数据,就直接返回,并起多线程更新数据。redis没有数据就返回一个新建对象,然后起多线程更新数据。
if redis has data, return value in redis and update value with multiple thread. if redis has no data, return a new object of return type, then update value with backend thread.
有3个参数:
type=3(默认是3),缓存没有值时的处理 1:抛出异常 2:返回一个空对象 3:如果是List返回[],-1:其他值返回null。
refreshSeconds=30(默认是-1),意味着分布式锁的过期时间是30秒,意思是30秒内如果数据没有抓完成,是不允许再次重入的。如果已经完成还是允许继续抓数据的。如果值是-1或小于0,则不加分布式锁。
expireSeconds=666666(默认是666666),意味着这个缓存过期时间是666666秒,也就是一周。
lockSeconds=60(默认是60),更新缓存前加的分布式锁的过期时间,默认是60,意思是分布式锁60秒过期。
@LockWithCache : 在方法上面加一把分布式锁。防止多线程多服务器重入。
add a redis lock. to prevent multi thread or multi server to visit method at the same time.
有1个参数,
expireSeconds=6(默认是6),意味着这个缓存过期时间是6秒。
@MockExecuteLater : 立即返回null,并起多线程执行。
return null and execute with background thread.
注意:spring注解功能在同一个类里互相调用是无效的。必须要用其他类的方法来调用加了注解的另一个方法
redis的key算法:配置的keyPrefix+":cacheKey:"+函数的类+方法名+所有参数的Json(除去没法序列化的)算出来的一个64位hash值(用sha256算法)。
然后Bean里面生成了一个cacheService可以直接使用的
@Autowired
private CacheService cacheService;
cacheService里面包含了所有jedis的方法,同时增加了getClassMethodValue和setClassMethodValue,和deleteClassMethodValue,和expireClassMethodValue,和ttlClassMethodValue来方便的操作前面的自动缓存
新增一个功能:用Controller类 implements com.gitee.fufu669.aspect.Logging会自动打印日志。
5. 工具类:
CacheAesUtil : Aes加密
CacheAopUtil : 切面工具
CacheDatetimeUtil : 日期工具
CacheDesUtil : Des加密
CacheExcelUtil : Excel工具用法
List<ArrayList<String>> list = CacheExcelUtil.readXlsxOrXls(/*MultipartFile*/ file);
CacheHtmlUtil : 字符串操作工具
CacheHttpUtil : http连接工具
CacheJsonUtil : Json转化工具
CacheMapUtil : Map转化工具
CacheNetworkUtil : 网络工具
CachePasswordUtil : 密码工具
CacheRandomUtil : 随机工具
CacheRedisKeyUtil : 缓存关键字工具
CacheResponseUtil : 响应回复工具
CacheStringUtils : 字符串工具
CacheSwaggerToWikiUtil : 用法
@Api(description = "swaggerUrl")
@RestController
@RequestMapping(value = "/v1/page/swagger/to/wiki", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
@SuppressWarnings({"rawtypes", "unused", "unchecked"})
public class PageSwaggerToWikiController implements Logging {
public static final Logger logger = LoggerFactory.getLogger(PageSwaggerToWikiController.class);
@ApiOperation("下载地址在下面的Request URL里。选中后鼠标右键,转到,就能下载一个doc文档了。")
@GetMapping(value = "/create/doc")
public void info(
@ApiParam(value = "serverUrl,比如你的swagger地址是http://192.168.22.183:5000/swagger-ui.html,那么这里就填入http://192.168.22.183:5000") @RequestParam(value = "serverUrl", required = false, defaultValue = "http://localhost:10666") String serverUrl,
@ApiParam(value = "showServerUrl,用来展示在wiki中的服务器的路径,比如http://www.test.com") @RequestParam(value = "showServerUrl", required = false, defaultValue = "http://localhost:10666") String showServerUrl,
HttpServletRequest request,
HttpServletResponse response
) {
CacheSwaggerToWikiUtil.info(serverUrl,showServerUrl,request,response);
}
}
CacheTableUtil : mybatisGenerator的表工具
CacheXmlUtil : 对象和xml互转工具
6. 更改日志
详细见git日志.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。