Redis学习 - set类型

案例一
import redis.clients.jedis.Jedis;
import java.util.Set;

public class SetMain {
    public static void main(String[] args){

        Jedis jedis = new Jedis("127.0.0.1", 6379);
        //武林人物登记表---杜绝冒名顶替的情况
        String[] daxias = new String[]{"郭靖", "黄蓉", "令狐冲", "杨过", "林冲",
                "鲁智深", "小女龙", "虚竹", "独孤求败", "张三丰", "王重阳", "张无忌"
                , "王重阳", "东方不败", "逍遥子", "乔峰", "虚竹", "段誉"
                , "韦小宝", "王语嫣", "周芷若", "峨眉师太", "慕容复", "郭靖", "乔峰", "王重阳"};

        jedis.sadd("hero",daxias);
        //获取一个set中的所有值
        Set<String> daxiaSet=jedis.smembers("hero");
        for(String name:daxiaSet){
            System.out.print(name+" "); //set--无序,无重复元素
        }
        System.out.println();

        //判断一个元素是否属于set
        boolean isComing = jedis.sismember("hero","无名氏");
        if(!isComing){
            System.out.println("无名氏没有参加");
        }

        //计算一个set中有多少元素
        long totalNum=jedis.scard("hero");
        System.out.println("参加人数为:"+totalNum);
        System.out.println();



        //大侠无名氏没有来,是因为报名参与另外一个会议 国际武林大会
        String[] daxiaArr = new String[]{"王语嫣", "周芷若", "峨眉师太", "慕容复","郭靖", "乔峰", "无名氏"};
        jedis.sadd("superhero", daxiaArr); //国际武林大会登记表
        Set<String> xindaxias = jedis.smembers("superhero");
        for (String name : xindaxias) {
            System.out.print(name + "--- ");  //集合的特点:无序、无重复元素
        }
        System.out.println();

        /*
         * 计算2set之间的交集
         * */
        Set<String> users=jedis.sinter("hero","superhero");
        System.out.print("交集:");
        for(String name:users){

            System.out.print(name+" ");
        }
        System.out.println();

        //计算2set之间的并集
        users=jedis.sunion("hero","superhero");
        System.out.print("并集:");
        for(String name:users){

            System.out.print(name+" ");
        }
        System.out.println();

        //两个集合的差集
        users = jedis.sdiff("hero","superhero");
        System.out.print("差集:");
        for(String name:users){

            System.out.print(name+" ");
        }
        System.out.println();

        //将两个集合的差集保存
        jedis.sdiffstore("stars","hero","superhero");
        for(String name:jedis.smembers("stars")){
            System.out.print(name+" ");
        }

    }
}

在这里插入图片描述

案例二
import redis.clients.jedis.Jedis;
import java.text.DecimalFormat;
import java.text.NumberFormat;

public class Transform {
    public static void main(String[] args) {

        Jedis jedis = new Jedis("127.0.0.1", 6379);

        //浏览某商品的用户
        jedis.sadd("viewUsers", "郭靖", "黄蓉", "令狐冲", "杨过", "林冲",
                "鲁智深", "小女龙", "虚竹", "独孤求败", "张三丰", "王重阳", "张无忌"
                , "王重阳", "东方不败", "逍遥子", "乔峰", "虚竹", "段誉");

        //下单用户
        jedis.sadd("orderUsers", "郭靖", "黄蓉", "令狐冲", "杨过", "林冲",
                "鲁智深", "小女龙", "虚竹", "独孤求败", "乔峰", "虚竹", "段誉");
        //支付用户
        jedis.sadd("paymentUsers", "郭靖", "黄蓉", "令狐冲", "杨过", "独孤求败", "段誉");

        //浏览过商品的用户,有哪些下单了。
        jedis.sinterstore("view2order", "viewUsers", "orderUsers"); //求两个集合的交集

        /*
         * 计算浏览某商品的用户数量和既浏览又下单的用户
         * */
        double viewUserNum = jedis.scard("viewUsers");
        double orderUserNum = jedis.scard("view2order");
        NumberFormat formatter = new DecimalFormat("0.00");
        Double x = new Double(orderUserNum / viewUserNum);
        System.out.print("订单" + orderUserNum + " /浏览" + viewUserNum + "转化率:" + formatter.format(x) + " 用户是:");
        for (String name : jedis.smembers("view2order")) {
            System.out.print(name + " ");
        }
        System.out.println();


        /*
         * 浏览并且下单的,最终的支付转化
         * */
        jedis.sinterstore("order2Payment", "view2order", "paymentUsers"); //交集
        double paymentUserNum = jedis.scard("paymentUsers");
        x = new Double(paymentUserNum / orderUserNum);
        System.out.print("支付" + paymentUserNum + "/订单" + orderUserNum + "转换率:" + formatter.format(x) + "  他们是:");
        for (String name : jedis.smembers("order2Payment")) {
            System.out.print(name + " ");
        }
        System.out.println();

        //浏览并最终支付的用户转化
        x = new Double(paymentUserNum / viewUserNum);
        System.out.print("支付" + paymentUserNum + "/浏览" + viewUserNum + "转化:" + formatter.format(x)+"    他们是:");
        for(String name:jedis.smembers("order2Payment")){
            System.out.print(name+" ");

        }
        System.out.println();

    }
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值