当前第2页 返回上一页
方案2的算法中,为了确保在非超时情况下,锁只能由有锁的线程进行释放,可以在value的时间戳中,拼上线程特征码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | Long TIMEOUT_SECOUND = 120000L;
String featureCode = "machine01" ;
Jedis client = jedisPool.getResource();
while (client.setnx( "lock" ,featureCode+ ":" +String.valueOf(System.currentTimeMillis())) == 0){
Long lockTime = Long.valueOf(client.get( "lock" ).substring(9));
if (lockTime!=null && System.currentTimeMillis() > lockTime+TIMEOUT_SECOUND) {
client.del( "lock" );
}
Thread.sleep(10000);
}
...........................
...........................
if (featureCode.equals(client.get( "lock" ).substring(0, 8))) {
client.del( "lock" );
}
|
更多Redis相关技术文章,请访问Redis教程栏目进行学习!
以上就是redis怎么实现分布式事务的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
Redis 6.0版本新特性介绍
?Redis的安装与使用
Redis怎么做集群
使用Redis实现一个安全可靠的分布式锁
Redis支持回滚吗
怎么理解Redis
简单易懂地介绍Redis缓存原理
Redis rdb方式数据备份与恢复【详解】
关于Redis事务和pipleline
将Redis安装至windows服务
更多相关阅读请进入《Redis》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » redis怎么实现分布式事务