1.Jedis事务
jedis.multi()开启事务
jedis.watch("监控对象");
jedis.unwatch();取消监控
代码
public class TestWatch {
public boolean Cost() throws InterruptedException {
Jedis jedis = new Jedis("192.168.0.52",6379);
int balance;
int debt;
int cost= 10;
jedis.watch("balance");
// set balance 5 延时7秒,在连接中修改 过后失败
Thread.sleep(7000);
balance =Integer.parseInt(jedis.get("balance"));
if (balance < cost){
jedis.unwatch();
System.out.println("modify");
return false;
}else {
System.out.println("Transaction --------");
Transaction tx = jedis.multi();
tx.decrBy("balance",cost);
tx.incrBy("debt",cost);
tx.exec();
balance=Integer.parseInt(jedis.get("balance"));
debt = Integer.parseInt(jedis.get("debt"));
System.out.println("balance = "+balance);
System.out.println("debt = "+debt);
return true;
}
}
public static void main(String[] args) throws InterruptedException {
TestWatch testWatch = new TestWatch();
boolean result = testWatch.Cost();
System.out.println(result);
}
}
2.主从复制
开启两个redis.server
jedis.slaveof( ip,port);
代码:
public class MasterSalve {
public static void main(String[] args) {
Jedis jedisMaster = new Jedis("192.168.0.52",6379);
Jedis jedisSlave = new Jedis("192.168.0.52",6380);
jedisSlave.slaveof("192.168.0.52",6379);
jedisMaster.set("hello","hello 6380");
System.out.println(jedisSlave.get("hello"));
}
}
3.JedisPool
运用单例模式
JedisPoolUtil
public class JedisPoolUtil {
private static volatile JedisPool jedisPool=null;
private JedisPoolUtil(){
}
public static JedisPool getJedisPoolInstance(){
if (null == jedisPool){
synchronized (JedisPoolUtil.class){
if (null == jedisPool){
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxTotal(1000);
poolConfig.setMaxIdle(32);
//borrow一个jedis实例时 最大等待时间
poolConfig.setMaxWaitMillis(100*1000);
//获得一个jedis实例检查连通性 ping()为true
poolConfig.setTestOnBorrow(true);
jedisPool = new JedisPool(poolConfig,"192.168.0.52",6379);
}
}
}
return jedisPool;
}
public static void release(JedisPool jedisPool, Jedis jedis){
if (jedis != null){
jedis.close();
}
}
}
Test
public class PoolTest {
@Test
public void pool1(){
JedisPool jedisPool = JedisPoolUtil.getJedisPoolInstance();
Jedis jedis =null;
try {
jedis=jedisPool.getResource();
jedis.set("ke","qq");
jedis.set("ke1","qq");
jedis.set("ke2","qq");
Set set = jedis.keys("*");
System.out.println(set);
}finally {
jedis.close();
}
}
}