美文网首页
关于缓存的一些总结(4)

关于缓存的一些总结(4)

作者: Y先生的领地 | 来源:发表于2021-03-02 10:22 被阅读0次

    使用锁来解决缓存击穿问题
    一提起锁大家可能都想到使用synchronized或者Lock这样的锁。
    在合理利用到synchronized时,springboot中的组件都是单例的,貌似没有问题,但很多的问题都出现在分布式部署上,比如有一个商品服务,被部署在了多台服务器上。


    image.png

    虽然每个服务都被加了锁,但是多个服务却用的不是同一把锁,所以我们要解决分布式锁的问题。
    在测试这些问题时有一个小的技巧,可以在idea中将相同的服务,复制多份,然后在设置的地方设置好端口号就可以了。


    image.png
    当然,测试的时候就不能访问某个单独的服务了,而应该访问负载均衡设置的端口,比如:80端口
    测试发现,如果启用了三个服务,会查询三次数据库,这个是不被允许的。
    所以需要使用到分布式锁,以下是分布式锁的运行原理:
    image.png

    但是使用redis进行加锁和解锁时,还需要考虑到高并发的情况,所以可以使用redis API中的原子加锁,原子解锁。
    虽然可以费一些功夫编写代码,但我们有更好的工具,所以随后学习使用工具类将代码化繁为简。

    相关文章

      网友评论

          本文标题:关于缓存的一些总结(4)

          本文链接:https://www.haomeiwen.com/subject/yxrtqltx.html