重复消费是指在分布式系统中,多次执行某一业务逻辑,导致资源浪费及重复性操作,从而给系统带来负面影响。在分布式系统中,解决重复消费的方法主要有Zookeeper做全局锁的方式、数据库做表锁的方式、基于Redis分布式锁的方式等。其中,基于Redis分布式锁的方式乃是一种在缓存中利用Redis做全局锁的有效技术,此方法可以有效的防止重复消费及损害系统性能。
开阳网站建设公司创新互联建站,开阳网站设计制作,有大型网站制作公司丰富经验。已为开阳1000多家提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的开阳做网站的公司定做!
基于Redis分布式锁的主要思想是,能实现不同请求在Redis缓存中,利用setnx写入某一key-value(如key为user+ID,value为锁定至指定时间),确保同一时刻同一请求只有一个实例执行;写入成功则表明获取到锁,继续执行业务逻辑;可将拿到的锁的实例的请求,放入备份Map中,做定时调度来释放没有被及时释放的锁,以免锁被一直占用(比如发生异常等)。
对于利用Redis分布式锁防止重复消费,服务端可编写以下代码来实现:
“`java
public boolean tryLock(String lockKey) {
RedisTemplate redisTemplate = getRedisTemplate();
Boolean aBoolean=redisTemplate.opsForValue().setIfAbsent(lockKey, userId);
if (aBoolean) {
redisTemplate.expire(lockKey, timeout, TimeUnit.SECONDS);
}
return aBoolean;
}
以上就是利用Redis有效防止重复消费所要采用的基于分布式锁的相关技术,但这种技术也存在一定的缺点,比如在集群内的实例全部锁定时,新的请求会被处理失败,造成资源浪费,而且若存在缓存与DB数据不一致的情况,则会出现一致性的问题等。基于Redis分布式锁的方式来防止重复消费乃是一种较可靠的技术手段,需要根据实际情况,来优化因考虑缓存与数据库间一致性问题而造成的资源浪费等。
创新互联服务器托管拥有成都T3+级标准机房资源,具备完善的安防设施、三线及BGP网络接入带宽达10T,机柜接入千兆交换机,能够有效保证服务器托管业务安全、可靠、稳定、高效运行;创新互联专注于成都服务器托管租用十余年,得到成都等地区行业客户的一致认可。
当前名称:利用Redis有效防止重复消费(redis防止重复消费)
转载来于:http://www.gawzjz.com/qtweb2/news18/16718.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联