一、连通性测试
注意:连接前必须关闭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命令
三、事务提交
- 一般API
//1.开启事务,注意区分Transaction类,不要导错 Transaction tx=jedisClient.multi(); //2.Transaction可调用大部分方法 tx.set("k1","v111"); tx.set("k2","v222"); //3.提交执行事务 tx.exec(); // 放弃本次事务 tx.discard();
- 并发“锁机制”—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"));