totalCount and ChunkCount

来源:6-5 编码实战:实现分块合并接口

abel_星123

2019-04-21

老师我想问下totalCount 和chunkCount 是怎么作比较的,听得有点蒙?totalCoun取出的值为什么是总的分块的数量。redis中的是k v 键值对是怎么存储这些数据的?
图片laosh描述

写回答

2回答

xiaomo

2019-04-21

同学你好,代码里的

totalCount是指这个文件需要分成多少块来上传,这个是在调用上传初始化接口时就已经计算好的一个数值并且保存到redis中了的;

chunkCount则是实际上已经上传的分块的数量,每完成一个分块的上传,redis里就会相应的增加一条分块记录。

调用文件分块合并的时候,chunkCount是从redis里统计出来(一共有多少条分块的记录)的,而totalCount是直接取出来(提前写到redis里的一个数量)的;然后两者比较,相等的时候,说明文件所有分块都已经上传完成了,否则会认为有分块未上传。

简单来说,
每上传一个分块就会动态增加hashset的一个字段,如{'chkidx_1':1,'chkidx_2':1}表示有两个分块;
totalCount就是一个提前写到redis里的一个数值,是一个理论值,它是不变的;
chunkCount是临时统计出来的数值,即一个实际统计值,统计依据是在redis实际存的分块记录数。


0
3
xiaomo
回复
abel_星123
这里的chkidx_1,chkidx_2只是为了一个filed能表示一个分块呢.其实idx是从0开始,chkidx_1表示第二块,chkidx_2表示第三块.而对应的值v其实这里暂未有实际意义;所以用set其实也够了.
2019-04-22
共3条回复

xiaomo

2019-04-22

当前一个文件的uploadid对应hash的一个key呢, 然后一个key下面有多对filed:value, 大概是这样子的:

//img.mukewang.com/szimg/5cbd520d000152d603880248.jpg

当然了,也可以用其他的结构体(比如list或者set)来实现分块信息的存储呢.

0
0

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 493 问题

查看课程