package sencondKill;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import org.jgroups.util.UUID;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;
public class MySencondKill implements Runnable {
private String key="watchkey";
private Jedis jedis=new Jedis("192.168.10.205",6379);
public static void main(String[] args) {
Jedis jedis=new Jedis("192.168.10.205",6379);
jedis.del("testSuccess","testFail");
jedis.set("watchkey", "0");
jedis.close();
ExecutorService executorService= Executors.newFixedThreadPool(20);
for(int i=0;i<2;i++){
executorService.execute(new MySencondKill());
}
executorService.shutdown();
}
public void run() {
try{
String watString= jedis.watch(key);
if(watString.equals("OK")){
}else{
System.out.println("----------------????????????????????OK");
}
String value= jedis.get(key);
int v= Integer.parseInt(value);
if(v<10){
String uuid= UUID.randomUUID().toString();
Transaction tr= jedis.multi();
tr.incr(key);
List<Object> list= tr.exec();
if(list!=null){
jedis.sadd("testSuccess", uuid+"已经上车了啦" );
System.out.println(uuid+"已经上车了啦");
}else{
jedis.sadd("testFail", uuid+"很不幸的失败了");
System.out.println(uuid+"很不幸的失败了");
}
}else{
System.out.println("空了");
}
}finally{
jedis.close();
}
}
}
看到的redis简单例子,类似于抢票的非常简单例子
最新推荐文章于 2024-07-03 13:44:38 发布