19年5月第1周
<h3>林雨 5月5日 ~ 5月11日 工作总结</h3>
<h4>1. 点开就看管理后台 tab 列表 修复 bug</h4>
<p>bug:点开小程序管理 tab 设置时,如果 min_manages_tag_location 表中没有该小程序的 记录 ,会尝试获取空对象的 location_type 而导致报错</p>
<p>修复:在获取 tab 列表时,如果该表内没有记录,则按数据库的默认值新增关于该小程序的记录</p>
<h4>2. 重构点开就看收藏控制器</h4>
<h5>原有缺陷</h5>
<ol>
<li>从 mongo 中获取指定 id 文章收藏状态,因数据库过大而导致效率过低</li>
<li>mongo 的收藏表中存储了过多冗余信息,导致数据库过大</li>
</ol>
<h5>解决方案:</h5>
<ol>
<li>
<p>将文章的收藏状态保存到 redis 的 bitmap 结构中,因为 bitmap 占用空间不大而存取效率很高,但因为确定收藏需要 appId、openid 和 articleId,而只有整形的 articleId 适合作为 bitmap 的offset,appId 与 openid 组合导致键的数量过多,而使得 bitmap 也占用了巨大的空间。最后选择了存储在 set 中,同时时间戳等额外的信息存储在 mongo 中</p>
</li>
<li>只保留 appId、openid、articleId 和 time 等必要的字段,其他信息从 redis 中查询</li>
</ol>
<h4>3. 写因重构收藏控制器所需的数据迁移脚本</h4>
<p>将 mongo 表中原有的 lite_user_col 前缀的表读取数据,写到 lite_user_col_v2 的表中,只保留 appId、openid、articleId 和 time 4个字段
将收藏信息存储在 redis 的以 s:lite:col:v2:${appId}:${openid} 规则命名 set 中</p>