【Redis】4.Jedis

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();
        }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值