分布式全局锁
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,Distlock参考文档:http://redis.io/topics/distlock分布式全局锁用在:分布式定时任务(执行前取锁),问医生(医生回答问题前取锁)设计原理:使用redis SET r
千家信息网最后更新 2025年01月23日分布式全局锁
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 ValueOperationsvalueOperations;@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安全错误
数据库的锁怎样保障安全
orcl数据库安装是字符集更改
中小企业服务器在哪里
数据库表怎么查页面功能模块
卫健委网络安全行业需求
阳江通讯软件开发销售厂
服务器语言传输前端
matrix数据库怎么样
网络安全对个人的影响
数据库管理中英文翻译
山东服务器电源哪里有
数据库项目管理的核心
数据库如何计算关键字个数
和工作站有哪些品牌服务器
云服务器有哪些 价格怎么样的
烟台思桌软件开发有限公司
广州久爱网络技术有限公司
内蒙古高校党建软件开发
数据库审计产品
找软件开发需要准备什么
数据库mq
计算机软件开发纠纷
同时查找两个数据库
一季度乡镇网络安全工作总结
北京微信软件开发流程
数字媒体跟软件开发
数据库冗余是指
数据库简答题什么是局部变量
警察网络安全管理考哪些科目
靖边租房软件开发
软件开发 税15