分布式锁-基于redis的分布式锁实现
2021/10/7 19:10:58
本文主要是介绍分布式锁-基于redis的分布式锁实现,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在微服务中缓存重建的时候一般会考虑使用分布式锁来避免缓存重建工作在不同的服务中重复执行
以下是使用Spring Cloud工程,基于Redis实现的分布式锁, 使用时需要引入 spring-boot-data-redis 依赖
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component; import java.util.concurrent.TimeUnit; @Component public class RedisLockSample { @Autowired private RedisTemplate redisTemplate; public synchronized String reconstructionCache() { boolean findValue = false; try{ for (int i = 0; i < 3; i++) { // 使用nx特性获取锁 boolean lock = redisTemplate.boundValueOps("lock").setIfAbsent("test"); if (lock) { // 多重检查避免无效更新 if (redisTemplate.hasKey("data:cache")) { findValue = true; break; } redisTemplate.opsForValue().set("data:cache", "业务数据部分"); findValue = true; break; } // 无法获取到锁 进入等待 try { TimeUnit.MILLISECONDS.sleep(200L); } catch (InterruptedException e) { e.printStackTrace(); } // 检查值是否被其他服务设置,如果被设置了则提前退出锁获取流程 if (redisTemplate.hasKey("data:cache")) { findValue = true; break; } } return findValue ? (String) redisTemplate.opsForValue().get("data:cache") : null; }finally { // 释放锁 redisTemplate.delete("lock"); } } }
这篇关于分布式锁-基于redis的分布式锁实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-08阿里云Redis项目实战入门教程
- 2024-11-08阿里云Redis资料:新手入门与初级使用指南
- 2024-11-08阿里云Redis教程:新手入门及实用指南
- 2024-11-07阿里云Redis学习入门:新手必读指南
- 2024-11-07阿里云Redis学习入门:从零开始的操作指南
- 2024-11-07阿里云Redis学习:初学者指南
- 2024-11-06阿里云Redis入门教程:轻松搭建与使用指南
- 2024-11-02Redis项目实战:新手入门教程
- 2024-10-22Redis入门教程:轻松掌握数据存储与操作
- 2024-10-22Redis缓存入门教程:快速掌握Redis缓存基础知识