分布式全局锁
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,Distlock参考文档:http://redis.io/topics/distlock分布式全局锁用在:分布式定时任务(执行前取锁),问医生(医生回答问题前取锁)设计原理:使用redis SET r
千家信息网最后更新 2026年10月31日分布式全局锁
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安全错误
数据库的锁怎样保障安全
耶加雪菲
互联网科技产业
互联网科技工作委员会主任
互联网科技保险
互联网和科技创新
宜安科技 互联网金融
润盈互联网科技
上海万想互联网科技
互联网科技咨询
温州喔噻互联网科技有限公司
港股科技和互联网
智腾互联网科技有限公司
注册互联网科技公司经营范围大全
互联网科技扶贫时间
2021世界互联网领先科技成果发布
互联网科技新闻
保山互联网科技靠谱吗
银川新华互联网科技学校原画
第三届互联网大会安防黑科技
知域互联网科技有限公司官网
华服互联网科技靠谱吗
重生之互联网科技帝国
互联网扶贫科技
互联网科技开发公司
互联网科技创新企业排名
燊美集互联网科技有限公司
雨阳互联网卡科技有限公司
互联网科技融合创新
中国互联网公司的科技投入
青岛易易互联网科技