memcache 缓存 分布式锁原理

来源:互联网 发布:淘宝网男士皮欧上衣 编辑:程序博客网 时间:2024/06/15 11:19
//cache.add (key ,value);如果service1 分布式部署,又同时操作了一个数据库记录,要对某个字段做更新,而这个字段的值,又依赖于之前的值,如何保证数据的正确性?public void sevice1(){if(cache.add(key,value)){//可以添加进去,证明是首次调用。 }else{       //不可以添加进去,证明是服务已经被调用了。 }这样就避免了在分布式环境中的服务调用。 }其实数据库本身就有行级锁,可以做到这一点。并发锁 解决的问题,是一个对象在多个线程之间共享了,并且多个线程在操作对象,修改状态。分布式锁解决的问题  是多实例部署服务的时候,避免同一个服务被调用的时候出现问题。(问题举例:服务的逻辑 获取微信token,设置缓存,如果两个客户端分别调用了两台服务器的同一个服务,这个时候同时检查缓存中没有,同时请求微信服务器,获取token,同时设置缓存,我们知道前一个获取到的token是无效的,因为后一个会重置它,这样,如果缓存设置的时候,把错误的token设置进去,就一直会有问题了。这个时候需要的是分布式锁。)
0 0
原创粉丝点击