[关闭]
@awsekfozc 2017-08-09T10:01:37.000000Z 字数 3268 阅读 1707

Jedis操作set集合

Redis

  1. /**
  2. * Set(集合)
  3. * SADD,SCARD,SDIFF,SDIFFSTORE,SINTER,SINTERSTORE,SISMEMBER,SMEMBERS,SMOVE,SPOP,SRANDMEMBER,SREM,SUNION,SUNIONSTORE,SSCAN
  4. */
  5. public class SetTypeTest {
  6. private Jedis jedis;
  7. private static final String KEY = "set";
  8. private static final String VALUE = "layman";
  9. @Before
  10. public void setUp() {
  11. this.jedis = new Jedis(new JedisShardInfo("192.168.133.188", 6379));
  12. }
  13. /**
  14. * SADD key member [member ...]
  15. * 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
  16. * 假如 key 不存在,则创建一个只包含 member 元素作成员的集合。
  17. * 当 key 不是集合类型时,返回一个错误。
  18. */
  19. @Test
  20. public void SADD() {
  21. jedis.sadd(KEY, VALUE + 2, VALUE + 0, VALUE + 1);
  22. SMEMBERS();
  23. }
  24. /**
  25. * SCARD key
  26. * 返回集合 key 的基数(集合中元素的数量)。
  27. */
  28. @Test
  29. public void SCARD() {
  30. System.out.println(jedis.scard(KEY));
  31. }
  32. /**
  33. * SDIFF key [key ...]
  34. * 返回一个集合的全部成员,该集合是所有给定集合之间的差集。
  35. * 不存在的 key 被视为空集。
  36. * <p/>
  37. * SDIFFSTORE destination key [key ...]
  38. * 这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。
  39. * 如果 destination 集合已经存在,则将其覆盖。
  40. * destination 可以是 key 本身。
  41. */
  42. @Test
  43. public void SDIFF() {
  44. SMEMBERS();
  45. jedis.sadd(KEY + 0, VALUE + 1, VALUE + 3);
  46. System.out.println(jedis.smembers(KEY + 0));
  47. System.out.println(jedis.sdiff(KEY, KEY + 0));//返回值为KEY-KEY0的值
  48. }
  49. /**
  50. * SINTER key [key ...]
  51. * 返回一个集合的全部成员,该集合是所有给定集合的交集。
  52. * 不存在的 key 被视为空集。
  53. * 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
  54. * <p/>
  55. * SINTERSTORE destination key [key ...]
  56. * 这个命令类似于 SINTER 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
  57. * 如果 destination 集合已经存在,则将其覆盖。
  58. * destination 可以是 key 本身。
  59. */
  60. @Test
  61. public void SINTER() {
  62. System.out.println(jedis.sinter(KEY, KEY + 0));
  63. }
  64. /**
  65. * SISMEMBER key member
  66. * 判断 member 元素是否集合 key 的成员。
  67. */
  68. @Test
  69. public void SISMEMBER() {
  70. System.out.println(jedis.sismember(KEY, VALUE + 0));
  71. System.out.println(jedis.sismember(KEY, VALUE + 5));
  72. }
  73. /**
  74. * SMEMBERS key
  75. * 返回集合 key 中的所有成员。
  76. * 不存在的 key 被视为空集合。
  77. */
  78. @Test
  79. public void SMEMBERS() {
  80. Set<String> smembers = jedis.smembers(KEY);
  81. System.out.println(smembers);
  82. }
  83. /**
  84. * SMOVE source destination member
  85. * 将 member 元素从 source 集合移动到 destination 集合。
  86. * SMOVE 是原子性操作。
  87. * 如果source集合不存在或不包含指定的member元素,则SMOVE命令不执行任何操作,仅返回0。否则,member元素从source集合中被移除,并添加到destination 集合中去。
  88. * 当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。
  89. * 当 source 或 destination 不是集合类型时,返回一个错误。
  90. */
  91. @Test
  92. public void SMOVE() {
  93. System.out.println(jedis.smembers(KEY));
  94. System.out.println(jedis.smembers(KEY + 0));
  95. jedis.smove(KEY, KEY + 0, "layman0");
  96. System.out.println(jedis.smembers(KEY));
  97. System.out.println(jedis.smembers(KEY + 0));
  98. }
  99. /**
  100. * SPOP key
  101. * 移除并返回集合中的一个随机元素。
  102. * 如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER 命令。
  103. */
  104. @Test
  105. public void SPOP() {
  106. SMEMBERS();
  107. System.out.println(jedis.spop(KEY));
  108. SMEMBERS();
  109. }
  110. /**
  111. * SRANDMEMBER key [count]
  112. * 如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。
  113. * 从 Redis 2.6 版本开始, SRANDMEMBER 命令接受可选的 count 参数:
  114. * 如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
  115. * 如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
  116. * 该操作和 SPOP 相似,但 SPOP 将随机元素从集合中移除并返回,而 SRANDMEMBER 则仅仅返回随机元素,而不对集合进行任何改动。
  117. */
  118. @Test
  119. public void SRANDMEMBER() {
  120. System.out.println(jedis.smembers(KEY + 0));
  121. System.out.println(jedis.srandmember(KEY + 0, 2));
  122. System.out.println(jedis.srandmember(KEY + 0, -2));
  123. }
  124. /**
  125. * SREM key member [member ...]
  126. * 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
  127. * 当 key 不是集合类型,返回一个错误。
  128. */
  129. @Test
  130. public void SREM() {
  131. SMEMBERS();
  132. jedis.srem(KEY, "layman1");
  133. SMEMBERS();
  134. }
  135. /**
  136. * SUNION key [key ...]
  137. * 返回一个集合的全部成员,该集合是所有给定集合的并集。
  138. * 不存在的 key 被视为空集。
  139. * <p/>
  140. * SUNIONSTORE destination key [key ...]
  141. * 这个命令类似于 SUNION 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
  142. * 如果 destination 已经存在,则将其覆盖。
  143. * destination 可以是 key 本身。
  144. */
  145. @Test
  146. public void SUNION() {
  147. SMEMBERS();
  148. jedis.sadd(KEY + 0, "layman" + new Random().nextInt(50));
  149. System.out.println(jedis.sunion(KEY, KEY + 0));
  150. }
  151. }

在此输入正文

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注