这是我参与「第三届青训营 -后端场」笔记创作活动的第4篇笔记。
借着我们青训营的契机,笔者在其中认识了一波志同道合的伙伴。我们一起组队完成项目的开发。我们小组选的的是抖音极简版的开发。
上回提到我们这篇笔记要探讨的是redis在我们项目中的有趣应用,那就不得不说说什么是redis了。Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI编写、支持网络、可基于内存亦可持久化的日志型、Key-Value,并提供多种语言的API。关于redis的作者开发redis的原因,也仅仅是因为当时的数据库对于他的网站日益增长的数据存储出现了问题,不太适配,所以干脆直接开发数据库。这属于是在问题的源头解决问题而不是根据问题改变策略了。当然不得不佩服大佬的开发能力了。
关于我们项目在使用redis上有两个比较有意思的点。首先是关于视频流的处理。视频流的输出有几个关键的属性:时间戳————按时间倒序输出视频、视频数————一次输出30个视频,相当于一个分页效果,同时还要在有视频不断写进的基础上正常运作。这自然让我们想到redis的zset结构。value存视频id,而score存视频的时间戳。redis中会自然的根据score进行排序。不过我们输出读取的不能是排序的序号,因为不断写进的视频会影响排序的顺序,所以我们选用的是zset根据score进行查询,限制一次查询30条数据。score服务端会返回最早的时间戳,这样就可以在不断插入新视频的情况下能正常的对视频进行查看访问了。好了,这是第一个有意思的点,还有一个有意思的点是关于关注列表的问题,那我们下回再续。