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. helpDB

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Da ...

  2. js:数据结构笔记5--链表

    数组: 其他语言的数组缺陷:添加/删除数组麻烦: js数组的缺点:被实现为对象,效率低: 如果要实现随机访问,数组还是更好的选择: 链表: 结构图: 基本代码: function Node (elem ...

  3. DP ZOJ 3735 Josephina and RPG

    题目传送门 题意:告诉你C(m,3)个队伍相互之间的胜率,然后要你依次对战n个AI队伍,首先任选一种队伍,然后战胜一个AI后可以选择替换成AI的队伍,也可以不换,问你最后最大的胜率是多少. 分析:dp ...

  4. Code 128 规则解析

    1.CODE 128 标准 1.1 code 128码格式:   格式:   从左起: 空白区域,起始字符(Start),数据区域(data),校验码(check),结束字符(Stop),空白区域. ...

  5. LightOJ1033 Generating Palindromes(区间DP/LCS)

    题目要计算一个字符串最少添加几个字符使其成为回文串. 一年多前,我LCS这道经典DP例题看得还一知半解时遇到一样的问题,http://acm.fafu.edu.cn/problem.php?id=10 ...

  6. WPF之资源字典zz

    最近在看wpf相关东西,虽然有过两年的wpf方面的开发经验,但是当时开发的时候,许多东西一知半解,至今都是模模糊糊,框架基本是别人搭建,自己也就照着模板写写,现在许多东西慢慢的理解了,回顾以前的若干记 ...

  7. BZOJ 1001 & SPFA

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

  8. HDU 4511 (AC自动机+状态压缩DP)

    题目链接:  http://acm.hdu.edu.cn/showproblem.php?pid=4511 题目大意:从1走到N,中间可以选择性经过某些点,比如1->N,或1->2-> ...

  9. jQuery 写的幻灯左右切换插件

    <html> <head> <meta charset="utf-8"> <title>官网</title> <s ...

  10. java第一节课

    1.安装 2.编写java程序 首先,新建一个文本文档:把后缀改成.java,然后起一个文件名,要是英文的,如:Hello. 然后,编辑,代码如下: class Hello { public stat ...