案例一
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();
/*
* 计算2 个set之间的交集
* */
Set<String> users=jedis.sinter("hero","superhero");
System.out.print("交集:");
for(String name:users){
System.out.print(name+" ");
}
System.out.println();
//计算2个set之间的并集
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+" ");
}
}
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/484b65100213e25ebdf3406b84e71f42.png)
案例二
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();
}
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1f70ec510404fb08ed1efef356aed540.png)