Redis:Redis的java客户端Jedis,JedisPool

一、Redis的Java客户端Jedis
    1 安装JDK
         tar -zxvf jdk-7u67-linux-i586.tar.gz
         vi /etc/profile
        重启一次Centos
        编码验证
    2 安装eclipse
    Jedis所需要的jar包
        commons-pool-1.6.jar
        jedis-2.1.0.jar
    3 Jedis常用操作
        测试连通性
     

  @Test
    public void test() {

        Jedis jedis = new Jedis("192.168.163.131",6379);
        Transaction transaction = jedis.multi();
        transaction.exec();
        System.out.println(jedis.ping());
    }


            一个key
            五大数据类型


    @Test
    public void test2() {
        Jedis jedis = new Jedis("192.168.163.131",6379);

        //key
        Set<String> keys = jedis.keys("*");

        for(Iterator<String> iterator = keys.iterator();iterator.hasNext();){
            System.out.println(iterator.next());
        }

        Long size = jedis.dbSize();
        Boolean det = jedis.exists("det");
        System.out.println("size:"+size);
        System.out.println("det:"+det);
        //String
        Long aLong = jedis.append("k1", "jedis");
        System.out.println(aLong);

        String mset = jedis.mset("k4", "v4", "k5", "v5","k6","v6");
        System.out.println(jedis.mget("k4","k5","k6"));
        //List
        jedis.lpush("list01","v1","v2","v3","v4","v5");
        List<String> list01 = jedis.lrange("list01", 0, -1);
        for(String s :list01){
            System.out.println(s);
        }

        //Set
        jedis.sadd("set01","jd001","jd001");
        jedis.sadd("set01","jd003","jd004","jd005");
        Set<String> set01 = jedis.smembers("set01");
        for(Iterator<String> iterator=set01.iterator();iterator.hasNext();){
            System.out.println(iterator.next());
        }
        Long srem = jedis.srem("set01", "jd002");
        System.out.println(srem);

        //hash
        jedis.hset("hash01","userName","lisi");
        String hget = jedis.hget("hash01", "userName");
        System.out.println(hget);

        Map<String,String> map = new HashMap<>();
        map.put("age","22");

        map.put("address","atgugu" );
        map.put("telephone","23232");
        String hash02 = jedis.hmset("hash02", map);
        List<String> hmget = jedis.hmget("hash02", "age", "address", "telephone");
        for(String s:hmget){
            System.out.println(s);
        }

        //Zset
        jedis.zadd("zset01",60d,"v1");
        jedis.zadd("zset01",70d,"v2");
        jedis.zadd("zset01",80d,"v3");
        jedis.zadd("zset01",90d,"v4");
        jedis.zadd("zset01",100d,"v5");
        Set<String> zset01 = jedis.zrange("zset01", 0, -1);

        for(Iterator<String> iterator1 = zset01.iterator();iterator1.hasNext();){
            System.out.println(iterator1.next());
        }


    }


        事务提交
            日常

  //事务
    @Test
    public void test3(){
        Jedis jedis = new Jedis("192.168.163.131",6379);

        Transaction transaction = jedis.multi();
        Response<String> set = transaction.set("k44", "v9");
        Response<String> set1 = transaction.set("k55", "v10");
//        transaction.exec();
        String discard = transaction.discard();
        String k10 = jedis.get("k44");
        System.out.println(k10);
    }


            加锁

 @Test
    public void test4 () {
        boolean b = transacMethod();
        System.out.println(b);
    }

    public boolean transacMethod(){
        Jedis jedis = new Jedis("192.168.163.131",6379);

        Integer balance;
        Integer det;
        //消费金额
        Integer mntToSubstract = 10;

        jedis.watch("balance");//类似于乐观锁,保证操作在一个事务中
        balance = Integer.parseInt(jedis.get("balance"));
        if(balance.compareTo(mntToSubstract) < 0){
            jedis.unwatch();
            return false;
        }else {
            Transaction transaction = jedis.multi();
            transaction.decrBy("balance",mntToSubstract);
            transaction.incrBy("det",mntToSubstract);
            transaction.exec();
            balance = Integer.parseInt(jedis.get("balance"));
            det = Integer.parseInt(jedis.get("det"));
            System.out.println("balance:"+balance+",det:"+det);
            return true;

        }
    }


        主从复制
            6379,6380启动,先各自先独立
            主写
            从读

//主从复制
    @Test
    public void test5() {
        Jedis jedis_M = new Jedis("192.168.163.131",6379);
        Jedis jedis_S = new Jedis("192.168.163.131",6380);
        jedis_M.slaveofNoOne();
        jedis_S.slaveofNoOne();
        jedis_S.slaveof("192.168.163.131",6379);

        jedis_M.set("km","testMaster_Slave");

        String km = jedis_S.get("km");
        System.out.println(km);


    }


    4 JedisPool
        获取Jedis实例需要从JedisPool中获取
        用完Jedis实例需要返还给JedisPool
        如果Jedis在使用过程中出错,则也需要还给JedisPool
        案例见代码
            JedisPoolUtil

public class JedisPollUtil {

    //被volatile 修饰的变量不会被本地线程缓存,对该变量的读写都是直接操作在共享内存中
    private static volatile JedisPool jedisPool = null;

    public JedisPollUtil() {
    }

    public static JedisPool getJedisPoolInstance() {
        if(jedisPool != null) {
            synchronized(JedisPollUtil.class) {
                if(jedisPool != null) {
                    JedisPoolConfig config = new JedisPoolConfig();

                    config.setMaxIdle(32);
                    config.setMaxWaitMillis(100*1000);
                    config.setTestOnBorrow(true);
                    jedisPool = new JedisPool(config,"6379");
                }
            }
        }
        return jedisPool;
    }



}


            Demo5
                jedisPool.getResource();
        配置总结all

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值