秒杀系统设计注意点2 | 青训营笔记

115 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 11 天

这篇文章主要是收集了笔者在学习今天的课程,在学习了一些秒杀系统设计与实现课程后并进行实践操作后,总结了一些注意点。

秒杀系统设计注意点2

缓存在查询操作中的使用原因

在一个上线的项目业务中,当这个项目的使用用户量庞大时,这个用户的操作可以分为两类:读和写。类似于数据库中的“读7写3”准则一样,用户需求对应的业务也会有这样大致的比例:查询操作占用户所有操作的七成,而修改操作只占用户所有操作的三成,甚至更少。

因此,改善一个系统的查询性能是极其重要的!在查询操作中,我们应该尽可能的利用缓存优化查询操作函数中的语句,最大效率地以空间换时间,带给用户更好的体验。

使用缓存带来的相关问题

修改缓存操作顺序

当我们引入缓存后,我们不得不面临一个问题:当用户修改信息时,我们后端程序员需要修改数据库数据和缓存的数据,然而又应该怎么安排缓存和数据库的数据这两者的修改顺序呢?

经过思考,我们不难发现,应该先修改数据库的数据,然后再对缓存的数据进行“操作”,而且这种操作不该是“修改”,而是“删除”!

  • 对于选择顺序的原因,是因为:如果先删除缓存,那么当用户在我们删除缓存时,刚好访问了数据,此时会访问数据库,得到的数据又会是脏数据,然后甚至还会把脏数据再写一遍到缓存中!如此循环。。。
  • 对于“操作”是“删除”而不是“修改”的原因,是因为:如果是修改,则在每次更新都会重新写一次到缓存中,而之后用户可能在这次“修改操作”后在很长时间内都不会进行“查询操作”,那么这次写入缓存的操作就是“无效写”了,极大的浪费了内存资源。

待补充