数据库是游戏源码用来存储数据的工具,虽然数据是存储在服务器上,但是使用数据库进行存储,可以提升数据管理效率。随着数据量、并发量的提升,会影响数据库性能,为了突破性能瓶颈,游戏源码可以使用缓存。

但是使用缓存的话,就需要解决数据库和缓存的数据一致性问题,简单来说,就是当一个数据发生更改后,游戏源码应该先更新数据库数据再更新缓存,还是先更新缓存数据再更新数据库。当然,具体实现起来还是比较复杂的,因为还牵扯到缓存数据删除等策略。

游戏源码
打开网易新闻 查看精彩图片
游戏源码

一、先更新数据库数据,再更新缓存

先更新数据库再更新缓存的策略,可以大大降低游戏源码数据库运行压力,提升访问速度,但是在数据更新的时候,容易受到并发影响,出现数据不一致问题。

比如说有两个用户同时申请更改同一条数据,数据库根据请求1将数据更新为A,并同步到缓存后,当时请求2向缓存请求更新数据为B,然后请求2覆盖了数据A,将数据更新为数据B,但是数据库中的数据是没有变化的,导致出现数据不一致情况。

游戏源码
打开网易新闻 查看精彩图片
游戏源码

二、先更新缓存数据,再更新数据库

如果游戏源码采用先更新缓存数据,再更新数据库的方案,同样也会因为并发问题导致数据不一致。和先更新数据库再更新缓存的问题类似,也是在并发修改同一条数据的情况下,出现数据不一致问题。

三、更新和删除数据

为了解决游戏源码数据库和缓存的数据不一致问题,技术人员可以采取更新数据和删除数据的策略,简单来说,不管是先更新数据库还是后更新数据库,缓存中的数据不采取更新策略,而是删除策略,当用户访问缓存时,发现该数据不存在于缓存中,再向数据库缓存该数据并返回给用户。

游戏源码
打开网易新闻 查看精彩图片
游戏源码

采取这个策略,技术人员同样要思考一个问题,是先更新游戏源码数据库的数据,再删除缓存,还是先删除缓存再更新数据库。如果采取先删除再更新的方案,可能会造成数据脏读。因为数据更新是需要时间的,当游戏源码删除掉了缓存数据后,用户再次访问这条数据,但是这时候数据更新还没完成,就会缓存到原来的数据,导致数据不一致。

如果游戏源码采用先更新再删除的策略,虽然也能出现数据不一致情况,但是缓存更新比数据库要快,出现数据不一致的可能性比较小。

声明:本文由云豹科技原创,转载请注明作者名及原文链接,否则视为侵权