redis 学习之一(数据结构)

通用方法            incr decr incrby decrby


redis string方法    get set mset mget setex expire

保存对象的两种方式
 //保存序列化之后的对象
        jedis.set("user:liudehua:obj".getBytes(), getBytesByProduct(person) );
        //jedis.set("user:liudehua:obj".getBytes(), "fasdf"); 不能用这种形式
        byte[] productBytes = jedis.get("user:liudehua:obj".getBytes());
        Person pByte = getProductByBytes(productBytes);
        System.out.println(pByte.getName()+"  " +pByte.getAge());

        //保存Json化之后的对象
        jedis.set("user:liudehua:json", new Gson().toJson(person));
        String personJson = jedis.get("user:liudehua:json");
        Person pjson = new Gson().fromJson(personJson, Person.class);
        System.out.println(pjson.getName()+"  "+ pjson.getAge());

应用场景:保存对象的时候


redis map 中的所有方法都以h开头  hgetALL hkeys hvals hincrBy hdel

应用场景:购物车


redis list    中只有 lrange这个方法没有 rrange这个方法不要想多了

insert 也只有 linsert这个方法 

jedis.linsert("柜台1", BinaryClient.LIST_POSITION.AFTER, "鸠摩智", "慕容复");
        jedis.linsert("柜台1", BinaryClient.LIST_POSITION.BEFORE,"鸠摩智","令狐冲");
        List<String> list1 = jedis.lrange("柜台1", 0, -1);
        for (String name : list1) {
            System.out.print(name + "  ");
        }
        System.out.println();

trim也是只有个 ltrim  它是用来修剪得

String res = jedis.ltrim("柜台1", 0, 2);  (0,2)是保留下来的数据,其他的都被修剪了。
        if ("OK".equals(res)) {
            for (String name : jedis.lrange("柜台1", 0, -1)) {
                System.out.print(name + "  ");
            }
        }

lpush rpush 倒是有的

相对应的 lpop rpop 也是有的

应用场景:网页爬虫的时候

redis set 都是以s开头 map是以h开头不是m开头,m开头的是string的mget mset

sadd方法:

 jedis.sadd("biwu:dengji", daxias);  //daxias是一个数组,可以直接往set里面添加数组

和sadd配对的是smembers方法 

 Set<String> daxiaSet = jedis.smembers("biwu:dengji");
        for (String name : daxiaSet) {
            System.out.print(name + " ");  //set集合的特点:无序、无重复元素
        }
        System.out.println();

sismember 判断是否有存在元素

scard 计算redis的set中有多少个元素

   //计算两个Set之间的交集
        Set<String> users = jedis.sinter("biwu:dengji", "guoji:dengji");
        for (String name : users) {
            System.out.print(name + " ");
        }
        System.out.println();


        //计算两个Set之间的并集
        users = jedis.sunion("biwu:dengji", "guoji:dengji");
        for (String name : users) {
            System.out.print(name + " ");
        }
        System.out.println();
        System.out.println("井中月出来了");


        //计算两个集合的差集
        users = jedis.sdiff("biwu:dengji", "guoji:dengji");
        for (String name : users) {
            System.out.print(name + " ");
        }
        System.out.println();

        System.out.println();
        //将两个集合计算出来的差集保存起来,升级为超级Vip
        jedis.sdiffstore("vipdaxia","biwu:dengji", "guoji:dengji");
        for (String name : jedis.smembers("vipdaxia")) {
            System.out.print(name + " ");
        }

应用场景:计算转化率的时候


redis orderset 方法都是以z开头的

              
    jedis.zadd("比武成绩", 10, "乔峰");
    jedis.zadd("比武成绩", 5, "王重阳");
    jedis.zadd("比武成绩", 7, "虚竹");
    jedis.zadd("比武成绩", 2, "王语嫣");
    jedis.zadd("比武成绩", 5, "段誉");
    jedis.zadd("比武成绩", 4, "峨眉师太");
    jedis.zadd("比武成绩", 20, "张三丰");
    //获取sortSet中所有的元素
    Set<String> names = jedis.zrange("比武成绩", 0, -1);
    for (String name : names) {
        System.out.println(name + "        排名: "
                //打印用户升序排行
                + jedis.zrank("比武成绩", name) + "           赢的场次: "
                //打印用户的比武成绩
                + jedis.zscore("比武成绩", name));
    }
    System.out.println("==============================");

    names = jedis.zrevrange("比武成绩", 0, -1);
    for (String name : names) {
        System.out.println(name + "         "
                + jedis.zrevrank("比武成绩", name) + "            "
                + jedis.zscore("比武成绩", name));
    }
    System.out.println("==============================");

    //修改用户的分数
    jedis.zincrby("比武成绩",100,"王语嫣");
    names = jedis.zrevrange("比武成绩", 0, -1);
    for (String name : names) {
        System.out.println(name + "         "
                + jedis.zrevrank("比武成绩", name) + "            "
                + jedis.zscore("比武成绩", name));
    }
}

 





猜你喜欢

转载自blog.csdn.net/yewakui2253/article/details/80297545