/**
* 加入redis缓存
*
* @param list 数据
* @param redisCacheKey redisKey
*/
private void addCacheRedis(List<HashMap<String, Object>> list, String redisCacheKey) {
Long t1 = System.currentTimeMillis();
//批量存入redis
Set<ZSetOperations.TypedTuple<String>> dataSet = new HashSet<>();
for (HashMap<String, Object> data : list) {
ZSetOperations.TypedTuple<String> typedTuple = new DefaultTypedTuple<>(JSONObject.toJSONString(data),
TypeUtils.castToDouble(data.get("ID")));
dataSet.add(typedTuple);
}
if (null != dataSet && dataSet.size() > 0) {
redisOpsUtil.strRedisTemplate.opsForZSet().add(redisCacheKey, dataSet);
}
Long t2 = System.currentTimeMillis();
if (log.isDebugEnabled()) {
log.debug("【{}】加入redis缓存耗时【{}】ms,数据量【{}】", redisCacheKey, t2 - t1, list.size());
}
//推送redis状态标记为开始状态
redisOpsUtil.strRedisTemplate.opsForValue().set(redisCacheKey + PosPackageRedisKey.PUSH_REDIS_STATUS,
PosPackageRedisKey.PUSH_REDIS_START);
if (log.isDebugEnabled()) {
log.debug("【{}】加入redis缓存状态【{}】进行中,数据量【{}】", redisCacheKey, PosPackageRedisKey.PUSH_REDIS_START, list.size());
}
}
//获取总数
Long zSetCount = redisOpsUtil.strRedisTemplate.opsForZSet().size(redisKey);
//分页数
Integer pageNum = zSetCount.intValue() / PosPackageRedisKey.BATCH;
if (zSetCount.intValue() % PosPackageRedisKey.BATCH != 0) pageNum++;
for (Integer i = 1; i <= pageNum; i++) {
List<HashMap<String, Object>> dataList = new ArrayList<>();
//分页取出redis数据
Set<String> proResultList = getRedisData(redisKey, zSetCount, i, quantity);
}
/**
* redis分页取数据
*
* @param redisKey
* @param zSetCount 总条数
* @param i 当前页数
* @return
*/
private Set<String> getRedisData(String redisKey, Long zSetCount, Integer i, Long dataSize) {
long startIndex = (i - 1) * PosPackageRedisKey.BATCH;
long endIndex = i * PosPackageRedisKey.BATCH - 1;
//分页取出数据
Set<String> proResultList = redisOpsUtil.strRedisTemplate.opsForZSet().
range(redisKey, startIndex, endIndex);
if (log.isDebugEnabled()) {
log.debug("redisKey【{}】,获取总数【{}】,获取商品数【{}】,当前数据量【{}】",
redisKey, zSetCount, proResultList.size(), dataSize);
}
return proResultList;
}