[笔记迁移][Redis][8]Redis的Java客户端—Jedis

版权声明:Collected by Bro_Rabbit only for study https://blog.csdn.net/weixin_38240095/article/details/83420309

一、连通性测试

注意:连接前必须关闭Redis服务所在主机的Linux防火墙 [参照:https://www.cnblogs.com/moxiaoan/p/5683743.html]

//获取一个Redis客户端
Jedis jedisClient = new Jedis("192.168.109.191", 6379);
//正常连接将返回PONG,若未关闭防火墙则抛出超时异常
System.out.println(jedisClient.ping());

二、基本操作API参照之前的Shell命令

三、事务提交

  1. 一般API
    //1.开启事务,注意区分Transaction类,不要导错
    Transaction tx=jedisClient.multi();
    //2.Transaction可调用大部分方法
    tx.set("k1","v111");
    tx.set("k2","v222");
    //3.提交执行事务
    tx.exec();
    // 放弃本次事务
    tx.discard();
    
  2. 并发“锁机制”—watch与unwatch
    	public static  boolean txMethod(){
    	Jedis jedisClient = new Jedis("192.168.109.191",6379);
    	
    	int balance=0;
    	int debt=0;
    	int amtToSubtract=20;
    	
    	//1. 为balance加锁监视
    	jedisClient.watch("balance");
    	
    	balance=Integer.parseInt(jedisClient.get("balance"));
    	
    	
    	if(balance<amtToSubtract){
    		//2. 先行判断,若不满足直接解锁,返回失败
    		jedisClient.unwatch();
    		return false;
    	}else{
    		System.out.println("=====Transaction start=====");
    		//3. 满足后,开启事务修改,提交后解锁,返回成功
    		Transaction tx = jedisClient.multi();
    		tx.decrBy("balance", amtToSubtract);
    		tx.incrBy("debt", amtToSubtract);
    		tx.exec();
    		System.out.println("=====Transaction commit=====");
    		
    		balance=Integer.parseInt(jedisClient.get("balance"));
    		debt=Integer.parseInt(jedisClient.get("debt"));
    		System.out.println("=====balance====="+balance);
    		System.out.println("=====debt====="+debt);
    		
    		return true;
    	}
    }
    

四、主从复制

Jedis master = new Jedis("192.168.109.191",6379);
Jedis slave1 = new Jedis("192.168.109.191",6380);
Jedis slave2 = new Jedis("192.168.109.191",6381);
		 
slave1.slaveof("192.168.109.191", 6379);
slave2.slaveof("192.168.109.191", 6380);
		 
master.set("class", "1");
		 
System.out.println("slave1 get===>"+slave1.get("class"));

猜你喜欢

转载自blog.csdn.net/weixin_38240095/article/details/83420309