mirror of
https://github.com/LamGC/ContentGrabbingJi.git
synced 2025-04-30 06:37:36 +00:00
[Change] 将部分CacheStore对象的类型调整为CacheStore<>以保证DIP, 增加灵活性;
[Change] 将Ranking缓存调整为JsonObjectRedisListCacheStore, 减少不必要的缓存数据查询;
This commit is contained in:
parent
c0c9a2d299
commit
b720f657d0
@ -47,10 +47,10 @@ public class BotCommandProcess {
|
|||||||
.create();
|
.create();
|
||||||
|
|
||||||
private final static Hashtable<String, File> imageCache = new Hashtable<>();
|
private final static Hashtable<String, File> imageCache = new Hashtable<>();
|
||||||
private final static JsonRedisCacheStore illustInfoCache = new JsonRedisCacheStore(BotEventHandler.redisServer, "illustInfo", gson);
|
private final static CacheStore<JsonElement> illustInfoCache = new JsonRedisCacheStore(BotEventHandler.redisServer, "illustInfo", gson);
|
||||||
private final static JsonRedisCacheStore illustPreLoadDataCache = new JsonRedisCacheStore(BotEventHandler.redisServer, "illustPreLoadData", gson);
|
private final static CacheStore<JsonElement> illustPreLoadDataCache = new JsonRedisCacheStore(BotEventHandler.redisServer, "illustPreLoadData", gson);
|
||||||
private final static JsonRedisCacheStore searchBodyCache = new JsonRedisCacheStore(BotEventHandler.redisServer, "searchBody", gson);
|
private final static CacheStore<JsonElement> searchBodyCache = new JsonRedisCacheStore(BotEventHandler.redisServer, "searchBody", gson);
|
||||||
private final static JsonRedisCacheStore rankingCache = new JsonRedisCacheStore(BotEventHandler.redisServer, "ranking", gson);
|
private final static CacheStore<List<JsonObject>> rankingCache = new JsonObjectRedisListCacheStore(BotEventHandler.redisServer, "ranking", gson);
|
||||||
private final static CacheStore<List<String>> pagesCache = new RedisPoolCacheStore<List<String>>(BotEventHandler.redisServer, "imagePages") {
|
private final static CacheStore<List<String>> pagesCache = new RedisPoolCacheStore<List<String>>(BotEventHandler.redisServer, "imagePages") {
|
||||||
@Override
|
@Override
|
||||||
protected String parse(List<String> dataObj) {
|
protected String parse(List<String> dataObj) {
|
||||||
@ -194,7 +194,7 @@ public class BotCommandProcess {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//TODO(LamGC, 2020.4.11): 将JsonRedisCacheStore更改为使用Redis的List集合, 以提高性能
|
//TODO(LamGC, 2020.4.11): 将JsonRedisCacheStore更改为使用Redis的List集合, 以提高性能
|
||||||
List<JsonObject> rankingInfoList = getRankingInfoByCache(type, mode, queryDate, 0, Math.max(0, itemLimit), false);
|
List<JsonObject> rankingInfoList = getRankingInfoByCache(type, mode, queryDate, 1, Math.max(0, itemLimit), false);
|
||||||
if(rankingInfoList.isEmpty()) {
|
if(rankingInfoList.isEmpty()) {
|
||||||
return "无法查询排行榜,可能排行榜尚未更新。";
|
return "无法查询排行榜,可能排行榜尚未更新。";
|
||||||
}
|
}
|
||||||
@ -679,31 +679,29 @@ public class BotCommandProcess {
|
|||||||
|
|
||||||
String date = new SimpleDateFormat("yyyyMMdd").format(queryDate);
|
String date = new SimpleDateFormat("yyyyMMdd").format(queryDate);
|
||||||
String requestSign = buildSyncKey(contentType.name(), ".", mode.name(), ".", date);
|
String requestSign = buildSyncKey(contentType.name(), ".", mode.name(), ".", date);
|
||||||
JsonArray result = null;
|
List<JsonObject> result = null;
|
||||||
if(!rankingCache.exists(requestSign) || flushCache) {
|
if(!rankingCache.exists(requestSign) || flushCache) {
|
||||||
synchronized(requestSign) {
|
synchronized(requestSign) {
|
||||||
if(!rankingCache.exists(requestSign) || flushCache) {
|
if(!rankingCache.exists(requestSign) || flushCache) {
|
||||||
log.info("Ranking缓存失效, 正在更新...(RequestSign: {})", requestSign);
|
log.info("Ranking缓存失效, 正在更新...(RequestSign: {})", requestSign);
|
||||||
List<JsonObject> rankingResult = pixivDownload.getRanking(contentType, mode, queryDate, 1, 500);
|
List<JsonObject> rankingResult = pixivDownload.getRanking(contentType, mode, queryDate, 1, 500);
|
||||||
JsonArray rankingArr = new JsonArray(rankingResult.size());
|
if(rankingResult.size() == 0) {
|
||||||
rankingResult.forEach(rankingArr::add);
|
|
||||||
if(rankingArr.size() == 0) {
|
|
||||||
log.info("数据获取失败, 将设置浮动有效时间以准备下次更新.");
|
log.info("数据获取失败, 将设置浮动有效时间以准备下次更新.");
|
||||||
}
|
}
|
||||||
|
result = new ArrayList<>(rankingResult).subList(start - 1, range);
|
||||||
result = rankingArr;
|
rankingCache.update(requestSign, rankingResult,
|
||||||
rankingCache.update(requestSign, rankingArr,
|
rankingResult.size() == 0 ? 5400000 + expireTimeFloatRandom.nextInt(1800000) : 0);
|
||||||
rankingArr.size() == 0 ? 5400000 + expireTimeFloatRandom.nextInt(1800000) : 0);
|
|
||||||
log.info("Ranking缓存更新完成.(RequestSign: {})", requestSign);
|
log.info("Ranking缓存更新完成.(RequestSign: {})", requestSign);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Objects.isNull(result)) {
|
if (Objects.isNull(result)) {
|
||||||
result = rankingCache.getCache(requestSign).getAsJsonArray();
|
result = rankingCache.getCache(requestSign, start - 1, range);
|
||||||
log.debug("RequestSign [{}] 缓存命中.", requestSign);
|
log.debug("RequestSign [{}] 缓存命中.", requestSign);
|
||||||
}
|
}
|
||||||
return PixivDownload.getRanking(result, start, range);
|
log.debug("Result-Length: {}", result.size());
|
||||||
|
return PixivDownload.getRanking(result, start - 1, range);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String buildSyncKey(String... keys) {
|
private static String buildSyncKey(String... keys) {
|
||||||
|
Loading…
Reference in New Issue
Block a user