1. package cn.com;
  2.  
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. import java.util.Set;
  6.  
  7. import redis.clients.jedis.Jedis;
  8.  
  9. /**
  10. * 集合的所有操作方法
  11. *
  12. * */
  13. public class Redis_Set {
  14. public static Jedis redis = new Jedis("localhost", 6379);// 连接redis
  15.  
  16. public static void zadd(){
  17. Map<String,Double> map=new HashMap<String,Double>();
  18. redis.zadd("user",map);
  19.  
  20. }
  21.  
  22. /**
  23. * 将一个或多个 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
  24. * */
  25. public static void sadd(){
  26. redis.flushDB();//清除数据
  27. redis.sadd("user", "a","b","c","d","e","f");
  28. Set<String> setList=redis.smembers("user");
  29. for(String s:setList){
  30. System.out.println(s);
  31. }
  32. }
  33.  
  34. /**
  35. * SCARD key
  36. * 返回集合 key 的基数(集合中元素的数量)
  37. * */
  38. public static void scard(){
  39. redis.flushDB();//清除数据
  40. redis.sadd("user", "a","b","c","d","e","f");
  41. Long number=redis.scard("user");
  42. System.out.println(number);
  43. }
  44.  
  45. /**
  46. * SDIFF key [key ...] 求差集
  47. * 返回一个集合的全部成员,该集合是所有给定集合之间的差集。
  48. * 不存在的 key 被视为空集。
  49. * 相当月user减去user1 剩下的 user 元素
  50. * */
  51. public static void sdiff(){
  52. redis.flushDB();//清除数据
  53. redis.sadd("user", "a","b","c","z");
  54. redis.sadd("user1", "a","c","d","f");
  55.  
  56. Set<String> setList=redis.sdiff("user","user1");
  57. for(String s:setList){
  58. System.out.println(s);
  59. }
  60. }
  61.  
  62. /**
  63. * SDIFFSTORE destination key [key ...]求差集 将结果放入新的结合中
  64. * 这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。
  65. * 如果 destination 集合已经存在,则将其覆盖。
  66. * destination 可以是 key 本身。
  67. * N 是所有给定集合的成员数量之和.
  68. * 例如:以下例子是 取出 user中在user1 不包含的元素 也就是(zzz)在user1 中不存在
  69. * */
  70. public static void sdiffstore(){
  71. redis.flushDB();//清除数据
  72. redis.sadd("user", "a","b","c","zzzz");
  73. redis.sadd("user1", "a","b","c","d","e","f");
  74.  
  75. long size=redis.sdiffstore("newuser","user","user1");
  76. System.out.println("size:"+size);
  77. Set<String> setList=redis.smembers("newuser");
  78. for(String s:setList){
  79. System.out.println(s);
  80. }
  81. }
  82.  
  83. /**
  84. * SINTER key [key ...] 求交集
  85. * 返回一个集合的全部成员,该集合是所有给定集合的交集。
  86. * 不存在的 key 被视为空集。
  87. * 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
  88. * */
  89. public static void sinter(){
  90. redis.flushDB();//清除数据
  91. redis.sadd("user", "a","b","c","zzzz");
  92. redis.sadd("user1", "a","b","c","d","e","f");
  93. Set<String> setList=redis.sinter("user","user1");
  94. for(String s:setList){
  95. System.out.println(s);
  96. }
  97. }
  98.  
  99. /**
  100. * SINTER key [key ...] 求交集 跟sinter区别在于是将差集的结果集放入新的数组中 如下的:newuser
  101. * 返回一个集合的全部成员,该集合是所有给定集合的交集。
  102. * 不存在的 key 被视为空集。
  103. * 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
  104. * */
  105. public static void sinterstore(){
  106. redis.flushDB();//清除数据
  107. redis.sadd("user", "a","b","c","zzzz");
  108. redis.sadd("user1", "a","b","c","d","e","f");
  109. long size=redis.sinterstore("newuser","user","user1");
  110. System.out.println("交集的大小:"+size);
  111.  
  112. Set<String> setList=redis.smembers("newuser");
  113. for(String s:setList){
  114. System.out.println(s);
  115. }
  116. }
  117.  
  118. /**
  119. * SUNION key [key ...]
  120. * 返回一个集合的全部成员,该集合是所有给定集合的并集。
  121. * 不存在的 key 被视为空集。
  122. * */
  123. public static void sunion(){
  124. redis.flushDB();//清除数据
  125. redis.sadd("user", "a","b","c","zzzz");
  126. redis.sadd("user1", "a","b","c","d","e","f");
  127. Set<String> setList=redis.sunion("user","user1");
  128.  
  129. for(String s:setList){
  130. System.out.println(s);
  131. }
  132. }
  133.  
  134. /**
  135. * SUNION key [key ...] 将两个集合的并集放入新的结合中 newuser
  136. * 返回一个集合的全部成员,该集合是所有给定集合的并集。
  137. * 不存在的 key 被视为空集。
  138. * */
  139. public static void sunionstore(){
  140. redis.flushDB();//清除数据
  141. redis.sadd("user", "a","b","c","zzzz");
  142. redis.sadd("user1", "a","b","c","d","e","f");
  143. long l=redis.sunionstore("newuser","user","user1");
  144. Set<String> setList=redis.smembers("newuser");
  145. for(String s:setList){
  146. System.out.println(s);
  147. }
  148. }
  149.  
  150. /**
  151. * SISMEMBER key member
  152. *判断 member 元素是否集合 key 的成员。
  153. * */
  154. public static void sismember(){
  155. redis.flushDB();//清除数据
  156. redis.sadd("user", "a","b","c","zzzz");
  157.  
  158. boolean b=redis.sismember("user", "a");
  159. boolean b1=redis.sismember("user", "不存在哦");
  160. System.out.println("返回一个 true 跟 false");
  161. System.out.println(b);
  162. System.out.println(b1);
  163. }
  164.  
  165. /**
  166. * 获取集合对象
  167. * */
  168. public static void smembers(){
  169. redis.flushDB();//清除数据
  170. redis.sadd("user", "a","b","c","d","e","f");
  171. Set<String> setList=redis.smembers("user");
  172. for(String s:setList){
  173. System.out.println(s);
  174. }
  175. }
  176.  
  177. /**
  178. * SMOVE source destination member
  179. * SMOVE 是原子性操作。
  180. * @param srckey 源集合key
  181. * @param dstkey 目标集合key
  182. * @param member 要移动的元素
  183. * 将源集合中的 元素member 移动到目标集合中
  184. * 返回值:
  185. * 如果 member 元素被成功移除,返回 1 。
  186. * 如果 member 元素不是 source 集合的成员,并且没有任何操作对 destination 集合执行,那么返回 0 。
  187. */
  188. public static void smove(){
  189. redis.flushDB();//清除数据
  190. redis.sadd("user", "a","b","c","zzzz");
  191. redis.sadd("user1", "d","e","f");
  192. redis.smove("user", "user1", "zzzz");
  193. System.out.println("======user剩下的元素应该是 a,b,c======");
  194. Set<String> setList=redis.smembers("user");
  195. for(String s:setList){
  196. System.out.println(s);
  197. }
  198.  
  199. System.out.println("======user 1的元素应该是 d,e,f,zzz======");
  200. Set<String> setList1=redis.smembers("user1");
  201. for(String s:setList1){
  202. System.out.println(s);
  203. }
  204. }
  205.  
  206. /**
  207. * SPOP key
  208. * 移除并返回集合中的一个随机元素。
  209. * 如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER 命令。
  210. * */
  211. public static void spop(){
  212. redis.flushDB();//清除数据
  213. redis.sadd("user", "1","2","3","4","5","6","7");
  214. String s=redis.spop("user");
  215. System.out.println("随机弹出并移除的元素:"+s);
  216. Set<String> setList=redis.smembers("user");
  217. for(String str:setList){
  218. System.out.println(str);
  219. }
  220. }
  221.  
  222. /**
  223. * 如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。
  224. * */
  225. public static void srandmember(){
  226. redis.flushDB();//清除数据
  227. redis.sadd("user", "1","2","3","4","5","6","7");
  228. String s=redis.srandmember("user");
  229. System.out.println("随机弹出不删除的元素:"+s);
  230.  
  231. Set<String> setList=redis.smembers("user");
  232. for(String str:setList){
  233. System.out.println(str);
  234. }
  235. }
  236.  
  237. /**
  238. * SREM key member [member ...]
  239. * 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
  240. * 当 key 不是集合类型,返回一个错误。
  241. * */
  242. public static void srem(){
  243. redis.flushDB();//清除数据
  244. redis.sadd("user", "1","2","3","4","5","6","7");
  245. redis.srem("user", "1","3","5");//删除1,3,5
  246. Set<String> setList=redis.smembers("user");
  247. for(String str:setList){
  248. System.out.println(str);
  249. }
  250. }
  251.  
  252. public static void main(String [] args){
  253. sunionstore();
  254. }
  255. }

  

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. 编译fdk-aac for ios

    Build all: build-fdk-aac.sh Build for some architectures: build-fdk-aac.sh armv7s x86_64 Build unive ...

  2. 使用C#导出MSSQL表数据Insert语句,支持所有MSSQL列属性

    在正文开始之前,我们先看一下MSSQL的两张系统表sys.objects . syscolumnsMSDN中 sys.objects表的定义:在数据库中创建的每个用户定义的架构作用域内的对象在该表中均 ...

  3. ubuntu桌面进不去,我跪了

    ubuntu12.04 输入密码正确,但仍然跳回到登陆界面,实在受不了啊! 不知道bug再哪里,但是有个方法真是屡试不爽啊.. ctrl+alt+f1切换到字符界面 /home/xxx/.Xautho ...

  4. extjs 选项卡

    yufenghou extjs 选项卡 <%@ page language="java" import="java.util.*" pageEncodin ...

  5. Vijos 1100 (区间DP)

    题目链接: https://vijos.org/p/1100 题目大意:NOIP著名的加分二叉树.给出一棵树的中序遍历,加分规则左子树*右子树+根.空子树分数为1.问最大加分的树结构,输出树结构的先序 ...

  6. shell函数

    1. 定义 : func() { } 或 function func() { } 2.参数 func 1 2 3 4 可在函数中直接调$1来使用,>=10的用${n}

  7. freemarker 图片输出、多张图片输出(图片重复原因及解决)

    单张图片显示: 先写好word格式的文档,在其中插入一张图片,然后重命名为ftl,再用编辑器打开,把图片那一段base64信息用freemarker表达式替换掉. 之后把图片的信息输出到模板即可. 多 ...

  8. 针对特定浏览器起作用的CSS: IE Chrome Firefox CSS Hack

    Firefox的CSSHack 只在Firefox上应用的CSS Hack,虽然这种情况非常少,但有时也会碰到: @-moz-document url-prefix() { .cssSelector ...

  9. io资料

    jitsi red5 apache meeting2 openmeeting2 openfire http://www.onlycoder.net/ 在视频会议领域,有许多可以值得参考的开源项目,这些 ...

  10. NVPerfHUD

    http://www.cnblogs.com/cproom/archive/2006/11/13/559287.html NVPerfHUD是一个很好的3D程序调试工具,它是NVPerfKit的一部分 ...