分布式全局锁
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,Distlock参考文档:http://redis.io/topics/distlock分布式全局锁用在:分布式定时任务(执行前取锁),问医生(医生回答问题前取锁)设计原理:使用redis SET r
千家信息网最后更新 2025年12月01日分布式全局锁
Distlock
参考文档:http://redis.io/topics/distlock
分布式全局锁用在:分布式定时任务(执行前取锁),问医生(医生回答问题前取锁)
设计原理:使用redis SET resource_name my_random_value NX PX 30000,当键不存在时才set值,键为锁的标识,值为该锁的删除验证码,用于删除锁时使用
具体流程:1.操作前拿锁,并设置删除码。2.执行业务操作。3.通过锁键拿到锁值,如果锁值与之前设置的删除码一致,则删除该锁,如果不一致,则需要考虑锁过期,别人已经拿到锁做了相关业务,自己的业务是否需要回滚。
实际使用:
1.pom加入redis依赖:
org.springframework.boot spring-boot-starter-redis
2.application.properties 配置redis服务器
spring.application.name=provider-service#使用哨兵,不手动指定redis服务器spring.redis.host=10.3.5.21spring.redis.port=6379#spring.redis.sentinel.master=master1#spring.redis.sentinel.nodes=10.3.5.36:26379,10.3.5.38:26379#微服务专用database 所有key需要以标准前缀(手动指定 微服务名: 或 缓存自动指定 类名完整路径) 不是该结构的key全部删除spring.redis.database=2spring.redis.timeout=10000
3.使用分布式全局锁
@Value("${spring.application.name}")private String appName;@Inject@Resource(name = "redisTemplate")private ValueOperations valueOperations;@Scheduled(cron = "0 58 * * * ?")public void foo(){ if(!RedisDistributedLock.lock(valueOperations, appName+":lock_BarService.foo()", "", 60)){ System.out.println("EnableScheduling return."); return; } System.out.println("EnableScheduling "+System.currentTimeMillis());}
服务
分布式
业务
全局
一致
医生
手动
服务器
任务
前缀
原理
哨兵
实际
文档
标准
标识
流程
类名
结构
缓存
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全搭建教程
3060显卡安装到服务器
1.7.10开服务器
浙江瑞金网络技术有限公司
近年来发生的网络安全案例
数据库用户变更后
小学生网络安全小技巧
fila足球世界数据库
软件开发职称怎么写
网络安全信息会议通知
教育部信息化网络安全工作
网络安全技术入学知识
网络安全宣传周是在几月
战地一怎么连接不上服务器
游戏服务器连接失败无法登录
使用网络技术措施种类数量
泰兴自动网络技术大概费用
为想科技互联网有限公司
谷歌云服务器怎么运行
全国网络安全专业大学排名前30
河北网络安全app
163服务器主机名怎么填
3060显卡安装到服务器
服务器模组怎么看是否使用
软件开发公司如何接外包
国家气象局网络安全通报
南京邮电大学网络安全宣传
贝尔编程软件开发
网络安全权威著作
网络安全防御工程师