package cn.com;

import java.util.HashMap;
import java.util.Map;
import java.util.Set; import redis.clients.jedis.Jedis; /**
* 集合的所有操作方法
*
* */
public class Redis_Set {
public static Jedis redis = new Jedis("localhost", 6379);// 连接redis public static void zadd(){
Map<String,Double> map=new HashMap<String,Double>();
redis.zadd("user",map); } /**
* 将一个或多个 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
* */
public static void sadd(){
redis.flushDB();//清除数据
redis.sadd("user", "a","b","c","d","e","f");
Set<String> setList=redis.smembers("user");
for(String s:setList){
System.out.println(s);
}
} /**
* SCARD key
* 返回集合 key 的基数(集合中元素的数量)
* */
public static void scard(){
redis.flushDB();//清除数据
redis.sadd("user", "a","b","c","d","e","f");
Long number=redis.scard("user");
System.out.println(number);
} /**
* SDIFF key [key ...] 求差集
* 返回一个集合的全部成员,该集合是所有给定集合之间的差集。
* 不存在的 key 被视为空集。
* 相当月user减去user1 剩下的 user 元素
* */
public static void sdiff(){
redis.flushDB();//清除数据
redis.sadd("user", "a","b","c","z");
redis.sadd("user1", "a","c","d","f"); Set<String> setList=redis.sdiff("user","user1");
for(String s:setList){
System.out.println(s);
}
} /**
* SDIFFSTORE destination key [key ...]求差集 将结果放入新的结合中
* 这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。
* 如果 destination 集合已经存在,则将其覆盖。
* destination 可以是 key 本身。
* N 是所有给定集合的成员数量之和.
* 例如:以下例子是 取出 user中在user1 不包含的元素 也就是(zzz)在user1 中不存在
* */
public static void sdiffstore(){
redis.flushDB();//清除数据
redis.sadd("user", "a","b","c","zzzz");
redis.sadd("user1", "a","b","c","d","e","f"); long size=redis.sdiffstore("newuser","user","user1");
System.out.println("size:"+size);
Set<String> setList=redis.smembers("newuser");
for(String s:setList){
System.out.println(s);
}
} /**
* SINTER key [key ...] 求交集
* 返回一个集合的全部成员,该集合是所有给定集合的交集。
* 不存在的 key 被视为空集。
* 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
* */
public static void sinter(){
redis.flushDB();//清除数据
redis.sadd("user", "a","b","c","zzzz");
redis.sadd("user1", "a","b","c","d","e","f");
Set<String> setList=redis.sinter("user","user1");
for(String s:setList){
System.out.println(s);
}
} /**
* SINTER key [key ...] 求交集 跟sinter区别在于是将差集的结果集放入新的数组中 如下的:newuser
* 返回一个集合的全部成员,该集合是所有给定集合的交集。
* 不存在的 key 被视为空集。
* 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
* */
public static void sinterstore(){
redis.flushDB();//清除数据
redis.sadd("user", "a","b","c","zzzz");
redis.sadd("user1", "a","b","c","d","e","f");
long size=redis.sinterstore("newuser","user","user1");
System.out.println("交集的大小:"+size); Set<String> setList=redis.smembers("newuser");
for(String s:setList){
System.out.println(s);
}
} /**
* SUNION key [key ...]
* 返回一个集合的全部成员,该集合是所有给定集合的并集。
* 不存在的 key 被视为空集。
* */
public static void sunion(){
redis.flushDB();//清除数据
redis.sadd("user", "a","b","c","zzzz");
redis.sadd("user1", "a","b","c","d","e","f");
Set<String> setList=redis.sunion("user","user1"); for(String s:setList){
System.out.println(s);
}
} /**
* SUNION key [key ...] 将两个集合的并集放入新的结合中 newuser
* 返回一个集合的全部成员,该集合是所有给定集合的并集。
* 不存在的 key 被视为空集。
* */
public static void sunionstore(){
redis.flushDB();//清除数据
redis.sadd("user", "a","b","c","zzzz");
redis.sadd("user1", "a","b","c","d","e","f");
long l=redis.sunionstore("newuser","user","user1");
Set<String> setList=redis.smembers("newuser");
for(String s:setList){
System.out.println(s);
}
} /**
* SISMEMBER key member
*判断 member 元素是否集合 key 的成员。
* */
public static void sismember(){
redis.flushDB();//清除数据
redis.sadd("user", "a","b","c","zzzz"); boolean b=redis.sismember("user", "a");
boolean b1=redis.sismember("user", "不存在哦");
System.out.println("返回一个 true 跟 false");
System.out.println(b);
System.out.println(b1);
} /**
* 获取集合对象
* */
public static void smembers(){
redis.flushDB();//清除数据
redis.sadd("user", "a","b","c","d","e","f");
Set<String> setList=redis.smembers("user");
for(String s:setList){
System.out.println(s);
}
} /**
* SMOVE source destination member
* SMOVE 是原子性操作。
* @param srckey 源集合key
* @param dstkey 目标集合key
* @param member 要移动的元素
* 将源集合中的 元素member 移动到目标集合中
* 返回值:
* 如果 member 元素被成功移除,返回 1 。
* 如果 member 元素不是 source 集合的成员,并且没有任何操作对 destination 集合执行,那么返回 0 。
*/
public static void smove(){
redis.flushDB();//清除数据
redis.sadd("user", "a","b","c","zzzz");
redis.sadd("user1", "d","e","f");
redis.smove("user", "user1", "zzzz");
System.out.println("======user剩下的元素应该是 a,b,c======");
Set<String> setList=redis.smembers("user");
for(String s:setList){
System.out.println(s);
} System.out.println("======user 1的元素应该是 d,e,f,zzz======");
Set<String> setList1=redis.smembers("user1");
for(String s:setList1){
System.out.println(s);
}
} /**
* SPOP key
* 移除并返回集合中的一个随机元素。
* 如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER 命令。
* */
public static void spop(){
redis.flushDB();//清除数据
redis.sadd("user", "1","2","3","4","5","6","7");
String s=redis.spop("user");
System.out.println("随机弹出并移除的元素:"+s);
Set<String> setList=redis.smembers("user");
for(String str:setList){
System.out.println(str);
}
} /**
* 如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。
* */
public static void srandmember(){
redis.flushDB();//清除数据
redis.sadd("user", "1","2","3","4","5","6","7");
String s=redis.srandmember("user");
System.out.println("随机弹出不删除的元素:"+s); Set<String> setList=redis.smembers("user");
for(String str:setList){
System.out.println(str);
}
} /**
* SREM key member [member ...]
* 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
* 当 key 不是集合类型,返回一个错误。
* */
public static void srem(){
redis.flushDB();//清除数据
redis.sadd("user", "1","2","3","4","5","6","7");
redis.srem("user", "1","3","5");//删除1,3,5
Set<String> setList=redis.smembers("user");
for(String str:setList){
System.out.println(str);
}
} public static void main(String [] args){
sunionstore();
}
}

  

Redis学习笔记(5)-Set的更多相关文章

  1. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  2. Redis学习笔记~目录

    回到占占推荐博客索引 百度百科 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合). ...

  3. Redis学习笔记4-Redis配置详解

    在Redis中直接启动redis-server服务时, 采用的是默认的配置文件.采用redis-server   xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务.按照本Redi ...

  4. Redis学习笔记7--Redis管道(pipeline)

    redis是一个cs模式的tcp server,使用和http类似的请求响应协议.一个client可以通过一个socket连接发起多个请求命令.每个请求命令发出后client通常会阻塞并等待redis ...

  5. Redis学习笔记一:数据结构与对象

    1. String(SDS) Redis使用自定义的一种字符串结构SDS来作为字符串的表示. 127.0.0.1:6379> set name liushijie OK 在如上操作中,name( ...

  6. Redis学习笔记之ABC

    Redis学习笔记之ABC Redis命令速查 官方帮助文档 中文版本1 中文版本2(反应速度比较慢) 基本操作 字符串操作 set key value get key 哈希 HMSET user:1 ...

  7. (转)redis 学习笔记(1)-编译、启动、停止

    redis 学习笔记(1)-编译.启动.停止   一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...

  8. Redis学习笔记(二)-key相关命令【转载】

    转自 Redis学习笔记(二)-key相关命令 - 点解 - 博客园http://www.cnblogs.com/leny/p/5638764.html Redis支持的各种数据类型包括string, ...

  9. Redis学习笔记(三)Redis支持的5种数据类型的总结

    继续Redis学习笔记(二)来说说剩余的三种数据类型. 三.列表类型(List) 1.介绍 列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的一段片段.列表类型内部是 ...

  10. Redis学习笔记(二)Redis支持的5种数据类型的总结之String和Hash

    引言 在Redis学习笔记(一)中我们已经会安装并且简单使用Redis了,接下来我们一起来学习下Redis支持的5大数据类型. 简介 Redis是REmote DIctionary Server(远程 ...

随机推荐

  1. SU Demos-03T-F Analysis-02Sutvband

    第一个脚本,生成震源扫描信号,并进行gabor变换 运行结果, 第二个脚本,利用时变滤波从和信号中重建单独的3个扫描信号 运行结果

  2. java中equals和hashCode方法的解析

    解析Java对象的equals()和hashCode()的使用 前言 在Java语言中,equals()和hashCode()两个函数的使用是紧密配合的,你要是自己设计其中一个,就要设计另外一个.在多 ...

  3. HDU3138 Coconuts(最小割)

    题目大概说有n个人每个人各有一个信仰0或1,他们中有m对朋友关系,现在要对一件事投票,可以为了和信仰不同的朋友一样而违背自己的信仰和朋友投一样的票,问违背信仰的人数加上和朋友投票结果不同的人数总和的最 ...

  4. BZOJ3799 : 字符串重组

    从大到小枚举答案与T串的lcp,然后贪心 #include<cstdio> #include<cstring> char s[5010],t[5010],ans[5010]; ...

  5. JavaScript中toStirng()与Object.prototype.toString.call()方法浅谈

    toStirng()与Object.prototype.toString.call()方法浅谈 一.toString()是一个怎样的方法?它是能将某一个值转化为字符串的方法.然而它是如何将一个值从一种 ...

  6. BZOJ 1001 & SPFA

    1001: [BeiJing2006]狼抓兔子 Time Limit: 15 Sec  Memory Limit: 162 MB Description 现在小朋友们最喜欢的"喜羊羊与灰太狼 ...

  7. Designing CSS Layouts With Flexbox Is As Easy As Pie

    This article is an updated excerpt of the chapter “Restyle, Recode, Reimagine With CSS3″ from our Sm ...

  8. This function has none of DETERMINISTIC, NO SQL 解决办法

    在恢复mysql数据库时提示 1418 - This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its decl ...

  9. 【BZOJ】1146: [CTSC2008]网络管理Network(树链剖分+线段树套平衡树+二分 / dfs序+树状数组+主席树)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1146 第一种做法(时间太感人): 第二种做法(rank5,好开心) ================ ...

  10. Nginx location 匹配规则

    1. default_server: 当请求没有匹配到服务器中配置的任何一个server的时候,会默认把请求route到配置了default_server的virtual host中.参考地址:htt ...