这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记
第四篇笔记的基础上,我们小组基本上完成了抖音项目后端功能的搭建,可以顺利接受客户端的请求并做出正确的反馈。在此基础上,我们小组考虑加入其它组件,以提高后端项目的性能和健壮性。
由于在第一版的项目中,每来一个客户端请求,后端都会解析出其对应的需求,然后去搜索对应的数据库表单,或者将客户端发送的数据存入数据库,这意味着每一个客户端请求都会造成一次或多次数据库操作。在用户的请求量不高时,尚且可以保证系统的反应速度,而一旦有大量的用户请求同时到达,就会导致需要大量数据库操作,这将会非常耗时。因此,我们考虑使用redis缓存以减少后端的响应时间。
redis
redis是一种使用C语言编写的数据库,但是这个数据库是存储在内存中的,因此其响应速度远远快于传统的关系型数据库,例如MySQL、SQL server等。因此redis经常被用于缓存,以加快数据的读取速度。redis还可以用于分布式锁、甚至是消息队列。
每当一个前端的用户请求到来,使用了缓存的数据处理流程如下:
1.检查缓存中是否有用户请求的数据内容,有则直接返回。
2.若缓存中不存在请求的数据,则搜索数据库。
3.若在数据库中找到请求的数据内容,跟新缓存的内容。
4.返回从数据库搜索的结果。
当前端需要有数据存入数据库时,使用了缓存的数据处理流程如下:
1.使用前端发送的数据更新缓存。
2.使用前端发送的数据更新数据库。
3.返回处理结果。
具体到我负责的部分,由于负责视频上传和视频列表的模块,我将video的信息数据放入redis进行缓存,每当用户上传视频时,就更新该用户对应的上传视频列表信息,当需要获取用户的上传视频列表时,只需要从redis中获取视频列表即可,不需要从硬盘数据库中重新读取,极大地加快了获取视频列表的速度。