`

利用redis的transaction功能,实现分布式下加锁

 
阅读更多
package memcached;

import java.util.List;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;

public class TestJedisLock {

	Jedis jedis = new Jedis("127.0.0.1", 6379);
	
	public static void main(String[] args) {
		TestJedisLock t = new TestJedisLock();		
		System.out.println(t.testLock());		
	}
	
	public boolean testLock() {
		String pk = "mypk";
		String lockPk = "lock" + pk;  
		String lockValue = String.valueOf(System.currentTimeMillis()) + "111";  
		 
		try {  
		    if(jedis.exists(lockPk)) { // other one locked already   
		        System.out.println("Already locked pk:" + pk);  
		        return false;  
		    }  
		  
		    jedis.watch(lockPk);// make sure below operation is particle   
		    jedis.multi();  
		      
		    Transaction trans = new Transaction(jedis.getClient());  
		    trans.set(lockPk, lockValue);  
		    trans.expire(lockPk, 60*60);  
		    List<Object> ret = trans.exec();  
		      
		    if(ret == null) {  
		    	System.out.println("Concurrent lock fail for pk:" + pk);  
		        return false;  
		    }  
		      
		    String lockedValue = jedis.get(lockPk);  
		      
		    return lockValue.equals(lockedValue); // locked success   
		 } catch (Exception e) {  
			System.out.println("Exception in lock for pk:" + pk);   
		    return false;  
		}
	}
}
 
分享到:
评论
1 楼 b_l_east 2013-10-29  
很有问题啊

相关推荐

    PHP商品秒杀问题解决方案实例详解【mysql与redis】

    本文详细分析了基于MySQL的悲观锁和乐观锁策略,以及利用Redis实现秒杀功能的方法,并在每种方案中详细阐述了相关操作技巧和注意事项,希望能够帮助读者更好地理解和掌握商品秒杀系统的设计和实现。对于希望构建稳定...

    Laravel开发-lock-laravel

    Laravel的锁功能主要通过数据库事务、Redis或其他分布式缓存系统实现,这使得开发者可以方便地处理高并发场景下可能出现的竞争条件。 在"lock-laravel"项目中,我们可以看到作者可能已经创建了一个专门为Laravel...

    jedis使用指南

    【pipeline】【分布式的id生成器】【分布式锁【watch】【multi】】【redis分布式】 好了,一个一个来。 一、 Pipeline 官方的说明是:starts a pipeline,which is a very efficient way to send lots of command and...

    2024-2025年Java大-中厂高频面试题

    默认情况下, `equals`方法的行为与`==`相同, 即比较引用是否相同。但在很多类中, 如`String`, `equals`被重写以比较对象内容。 #### 3. Java中的数学函数 - **Math类**提供了许多数学函数, 如: - `Math.abs()`: ...

    毕业论文-安全跳转页面-整站商业源码.zip

    毕业论文-安全跳转页面-整站商业源码.zip

    实训商业源码-视频解析-毕业设计.zip

    实训商业源码-视频解析-毕业设计.zip

    实训商业源码-小小素材库V7.8.45 小程序前端+后端-毕业设计.zip

    实训商业源码-小小素材库V7.8.45 小程序前端+后端-毕业设计.zip

    毕业论文-二刺螈导航-整站商业源码.zip

    毕业论文-二刺螈导航-整站商业源码.zip

    AI在MES中的应用.pdf

    AI在MES中的应用.pdf

    基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例

    基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例,该项目是个人毕设项目,答辩评审分达到98分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了Cesium的一些基础示例基于Vue 3实现的Cesium大屏可视化项目源代码,展示了

    【跨境电商营销】亚马逊蓝牙音箱产品数据分析:市场表现与关键词影响研究

    内容概要:该报告由Co.media可美亚发布,基于Amazon平台上的蓝牙音箱产品数据,通过网页工具抓取并清理了772笔交易信息,最终分析了248笔有效数据。报告揭示了评论数高的产品通常售价较高,但低价并非获得高评级的有效手段。高频关键词如“Speaker”、“Bluetooth”、“Smart”、“Wireless”等能显著提升搜索匹配度和销售排名,尤其是前20名产品大多带有这些关键词。此外,价格较低的产品多归类为手机&配件,而价格较高的则归类为电子产品。前50名产品在金额、评论和星数方面具有明显优势,而新产品若想快速进入搜索排名前10,则需重点投入于产品定价和评论星数的提升。 适合人群:希望拓展北美市场的中国品牌企业、从事跨境电商的从业者以及对蓝牙音箱市场感兴趣的投资者。 使用场景及目标:①帮助企业了解蓝牙音箱在北美市场的竞争态势;②指导企业优化产品标题中的关键词选择,以提高搜索排名;③为制定产品定价策略和提升用户评价提供数据支持。 其他说明:Co.media可美亚是一家专注于为中国品牌提供跨境整合营销服务的公司,尤其擅长帮助企业在北美市场建立品牌知名度和竞争力。报告中涉及的数据分析方法包括统计回归分析,用于评估不同因素对搜索排名和销售排名的影响。

    基于Go+python实现的网络异常流量检测系统+源码+GUI界面(毕业设计&课程设计&项目开发)

    基于Go+python实现的网络异常流量检测系统+源码+GUI界面,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于Go+python实现的网络异常流量检测系统+源码+GUI界面,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于Go+python实现的网络异常流量检测系统+源码+GUI界面,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于Go+python实现的网络异常流量检测系统+源码+GUI界面,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于Go+python实现的网络异常流量检测系统+源码+GUI界面,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用 基于Go+python实现的网络异常流量检测系统+源码+GUI界面,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用

    ANSYS SpaceClaim直接建模技术.pdf

    ANSYS SpaceClaim直接建模技术.pdf

    毕业论文-超人配送代驾跑腿小程序V1.5.10 前端+后端-整站商业源码.zip

    毕业论文-超人配送代驾跑腿小程序V1.5.10 前端+后端-整站商业源码.zip

    毕业论文-wx码支付-整站商业源码.zip

    毕业论文-wx码支付-整站商业源码.zip

    实训商业源码-智能AI雷达名片+1.6.7-毕业设计.zip

    实训商业源码-智能AI雷达名片+1.6.7-毕业设计.zip

    ANSYS网格划分.pdf

    ANSYS网格划分.pdf

    3D变形技术在汽车造型设计中的应用.pdf

    3D变形技术在汽车造型设计中的应用.pdf

    ANSYS高级流体动力学培训手册2.pdf

    ANSYS高级流体动力学培训手册2.pdf

    vosk-model-small-cn-022

    vosk-model-small-cn-022

Global site tag (gtag.js) - Google Analytics