zoukankan      html  css  js  c++  java
  • redis开始事物,秒杀demo

    1.main

    package redis;
    
    import java.util.concurrent.ExecutorService;
    import java.util.concurrent.Executors;
    
    import redis.clients.jedis.Jedis;
    
    public class test1 {
    	public static void main(String[] args) {
    		Jedis jedis = new Jedis("127.0.0.1");	
    		jedis.set("iphoneX", "1000");	
    		jedis.close();
    		ExecutorService executor = Executors.newFixedThreadPool(1050);
    		
    		for(int i=0;i<20000;i++){
    			executor.execute(new threadtest("user"+i));
    		}
    		executor.shutdown();		
    	}
    }
    

    2.newRunnable

    package redis;
    
    import java.util.List;
    
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.Transaction;
    
    public class threadtest implements Runnable {
    	String productKey="iphoneX";
    	String user;
    	Jedis jedis = new Jedis("127.0.0.1");
    	
    	public threadtest(String user) {
    		this.user=user;
    	}
    
    	public void run() {
    		
    		jedis.watch("iphoneX");
    		String number = jedis.get("iphoneX");
    		int num = Integer.valueOf(number);
    		if(num >0 &&num<=1000){
    			Transaction tx = jedis.multi();
    			tx.incrBy(productKey,-1);
    			List<Object> list = tx.exec();
    			if(list==null || list.size()==0){
    				System.out.println(user+"抢购失败");
                }else{
                	for(Object success :list){
                		System.out.println(user+"---("+success+")抢购成功");		 
                	}
                }
    			
    		}else{
    			System.out.println(user+"被抢空了");
    		}
    		jedis.close();
    	}
    
    }
    

      

    今日事今日毕
  • 相关阅读:
    中缀、后缀、前缀表达式
    Salesforce图片上传
    VSCode格式化Apex代码
    Reporting Services已有帐号出现无法登录的问题
    EF-查询缓存
    visual studio 2015将已有项目添加到码云(gitee)
    asp.net页面加载两次的坑
    EF的性能瓶颈
    微信JS-SDK上传多张照片
    Python20-Day02
  • 原文地址:https://www.cnblogs.com/gjack/p/8848387.html
Copyright © 2011-2022 走看看