java连接Redis

java连接Redis

1.Jedis所需要的的jar包依赖
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.1.0</version>
</dependency>
2.Jedis常用操作
2.1 测试连通性
public class TestRedisPing {
    public static void main(String[] args) {
        //创建连接
        Jedis jedis=new Jedis("192.168.120.129", 6379);
        //设置密码 如果没有密码可以不设置
        jedis.auth("123456");
        //调用 ping方法
        String ping = jedis.ping();
        //输出PONG
        System.out.println(ping);
        jedis.close();//一定要注意关闭
    }
}
2.2 常规操作
public class App {
    public static final String HOST = "192.168.161.66";
    public static final int HOST_IP = 6379;
    public static void main( String[] args ) {
        Jedis jedis = new Jedis(HOST,HOST_IP);
        //设置密码
        //jedis.auth("123456");
        System.out.println(jedis);
        String ping = jedis.ping();
        System.out.println(ping);
        //set设置值,get取值
        //jedis.set("a","acd");
        //jedis.set("b","bbb");
        //jedis.set("c","ccc");
        String a = jedis.get("a");
        System.out.println(a);
        //keys * 获取所有键
        Set<String> keys = jedis.keys("*");
        System.out.println(keys);
        //list操作:lpush往里放值;lpop,弹出值,弹出就没有了,lrange取值,0到-1是取所有
        //jedis.lpush("al","aaa","ccc","bbb","ddd");
        System.out.println(jedis.lrange("al",0,-1));
		//其余指令和day02的基本指令一样,每个指令都有对应得方法
        jedis.close();  //一定要记得回收关闭清空资源
    }
}
2.3 事务提交
常规操作
 
public class TestReidsTranaction {

    public static void main(String[] args) {
        // 创建连接
        Jedis jedis = new Jedis("192.168.120.129", 6379);
        // 设置密码 如果没有密码可以不设置
        jedis.auth("123456");
         //监控key,如果该动了事务就被放弃
         /*3
         jedis.watch("serialNum");
         jedis.set("serialNum","s#####################");
         jedis.unwatch();*/
         
         Transaction transaction = jedis.multi();//被当作一个命令进行执行
         Response<String> response = transaction.get("serialNum");
         transaction.set("serialNum","s002");
         response = transaction.get("serialNum");
         transaction.lpush("list3","a");
         transaction.lpush("list3","b");
         transaction.lpush("list3","c");
         
         transaction.exec();
         //2 transaction.discard();
         System.out.println("serialNum***********"+response.get());
        jedis.close();

    }

}

加锁操作
 
public class TestReidsTranactionLock {

    public boolean transMethod() {
        // 创建连接
        Jedis jedis = new Jedis("192.168.120.129", 6379);
        // 设置密码 如果没有密码可以不设置
        jedis.auth("123456");
        int balance;// 可用余额
        int debt;// 欠额
        int amtToSubtract = 10;// 实刷额度

        jedis.watch("balance");
        // jedis.set("balance","5");//此句不该出现,讲课方便。模拟其他程序已经修改了该条目
        balance = Integer.parseInt(jedis.get("balance"));
        if (balance < amtToSubtract) {
            jedis.unwatch();
            System.out.println("modify");
            jedis.close();
            return false;
        } else {
            System.out.println("***********transaction");
            Transaction transaction = jedis.multi();
            transaction.decrBy("balance", amtToSubtract);
            transaction.incrBy("debt", amtToSubtract);
            transaction.exec();
            balance = Integer.parseInt(jedis.get("balance"));
            debt = Integer.parseInt(jedis.get("debt"));
            System.out.println("*******" + balance);
            System.out.println("*******" + debt);
            jedis.close();
            return true;
        }
    }

    /**
     * 通俗点讲,watch命令就是标记一个键,如果标记了一个键, 在提交事务前如果该键被别人修改过,那事务就会失败,这种情况通常可以在程序中 重新再尝试一次。
     * 首先标记了键balance,然后检查余额是否足够,不足就取消标记,并不做扣减; 足够的话,就启动事务进行更新操作,
     * 如果在此期间键balance被其它人修改, 那在提交事务(执行exec)时就会报错, 程序中通常可以捕获这类错误再重新执行一次,直到成功。
     */
    public static void main(String[] args) {
        TestReidsTranactionLock test = new TestReidsTranactionLock();
        boolean retValue = test.transMethod();
        System.out.println("main retValue-------: " + retValue);
    }

}
2.4 主从复制
public class TestReidsMS {

    public static void main(String[] args) throws InterruptedException {
        // 创建连接
        Jedis jedis_M = new Jedis("192.168.120.129", 6379);
        Jedis jedis_S = new Jedis("192.168.120.129", 6380);

        jedis_S.slaveof("127.0.0.1", 6379);

        jedis_M.set("k6", "v6");

        Thread.sleep(500);
        System.out.println(jedis_S.get("k6"));
        jedis_M.close();
        jedis_S.close();
    }

}
2.5 集群连接
public class ClusterConnection {
    public static final String HOST = "192.168.161.66";
    public static final int HOST_IP = 7000;
    public static void main( String[] args ) {
        Set<HostAndPort> nodes = new HashSet<>();
        nodes.add(new HostAndPort(HOST,7000));
        nodes.add(new HostAndPort(HOST,7001));
        nodes.add(new HostAndPort(HOST,7002));
        nodes.add(new HostAndPort(HOST,7003));
        nodes.add(new HostAndPort(HOST,7004));
        nodes.add(new HostAndPort(HOST,7005));

        JedisCluster jedisCluster = new JedisCluster(nodes);
        jedisCluster.set("name","xdd");
        System.out.println(jedisCluster.get("name"));
        jedisCluster.close();  //一定要记得回收关闭清空资源
    }
}
3. JedisPool
3.1 为什么要是用JedisPool
  1. 获取Jedis实例需要从JedisPool中获取
  2. 用完Jedis实例需要返回给JedisPool
  3. 如果Jedis在使用过程中出现错误,则也需要返还给JedisPool
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值