近期有空,汇总下redis各个数据结构的操作命令。这篇汇总set命令用于加深记忆。
SADD
sadd命令用于插入set集合value。返回插入成功的元素。
Jedis jedis = new Jedis("127.0.0.1", 6379);
System.out.println("sadd命令执行结果 " + jedis.sadd("append1", "a", "b", "c"));
System.out.println("sadd命令执行结果 " + jedis.sadd("append1", "a", "d", "e"));
SCARD
scard命令用于返回key对应的集合数,若key不存在则返回0。
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.sadd("append1", "a", "b", "c");
System.out.println("scard命令执行结果 " + jedis.scard("append1"));
System.out.println("scard命令执行结果 " + jedis.scard("append2"));
SDIFF
sdiff命令用于返回集合的差集(差集集合概念简述看这里)。若key不存在则返回空集。
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.sadd("append1", "a", "b", "c", "d");
jedis.sadd("append2", "b", "c", "w");
jedis.sadd("append3", "a", "b", "e");
System.out.println("sdiff命令执行结果 " + jedis.sdiff("append1", "append2", "append3"));
System.out.println("sdiff命令执行结果 " + jedis.sdiff("append1", "append2", "append4"));
System.out.println("sdiff命令执行结果 " + jedis.sdiff("append5", "append2", "append3"));
sdiff命令执行结果 [d]
sdiff命令执行结果 [d, a]
sdiff命令执行结果 []
SDIFFSTORE
sdiffstore命令用于将得到的差集集合存入指定集合中,若指定集合存在则覆盖原集合,若集合不存在则新建key并将差集存入。
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.sadd("append1", "a", "a", "b", "c", "c", "d");
jedis.sadd("append2", "b", "c", "w");
jedis.sadd("append3", "a", "b", "e");
System.out.println("sdiffstore命令执行结果 " + jedis.sdiffstore("append6", "append1", "append2", "append3"));
sdiffstore命令执行结果 1
SINTER
sinter命令用于返回集合的交集。
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.sadd("append1", "a", "a", "b", "c", "c", "d");
jedis.sadd("append2", "b", "c", "w");
jedis.sadd("append3", "a", "b", "e");
System.out.println("sinter命令执行结果 " + jedis.sinter("append1", "append2", "append3"));
sinter命令执行结果 [b]
SINTERSTORE
sinterstore命令用于将集合的交集存入指定集合,若集合已存在元素则覆盖,若集合不存在则新建key并存入集合。结果返回交集的元素个数。
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.sadd("append1", "a", "a", "b", "c", "c", "d");
jedis.sadd("append2", "b", "c", "w");
jedis.sadd("append3", "a", "b", "e");
System.out.println("sinterstore命令执行结果 " + jedis.sinterstore("append4", "append1", "append2", "append3"));
sinterstore命令执行结果 1
SISMEMBER
sismember命令用于检索value是否存在于集合中,若存在则返回1若不存在或key不存在则返回0。
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.sadd("append1", "a", "a", "b", "c", "c", "d");
System.out.println("sismember命令执行结果 " + jedis.sismember("append1", "a"));
System.out.println("sismember命令执行结果 " + jedis.sismember("append1", "z"));
System.out.println("sismember命令执行结果 " + jedis.sismember("append2", "a"));
sismember命令执行结果 true
sismember命令执行结果 false
sismember命令执行结果 false
SMEMBERS
smembers用于返回key对应的集合元素。
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.sadd("append1", "a", "a", "b", "c", "c", "d");
System.out.println("smembers命令执行结果 " + jedis.smembers("append1"));
System.out.println("smembers命令执行结果 " + jedis.smembers("append2"));
smembers命令执行结果 [a, b, c, d]
smembers命令执行结果 []
SMOVE
smove命令用于将源集合的元素移除并存储至目标集合。若源集合不存在该元素则不做操作,若目标集合存在该元素则只是将源集合中的元素移除。若移除成功则返回1否则返回0。
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.sadd("append1", "a", "a", "b", "c", "c", "e");
jedis.sadd("append2", "a", "a", "b", "c", "c", "d");
System.out.println("smove命令执行结果 " + jedis.smove("append1", "append2", "e"));
for (String string : jedis.smembers("append1")) {
System.out.print(string + " ");
}
System.out.println();
for (String string : jedis.smembers("append2")) {
System.out.print(string + " ");
}
System.out.println();
System.out.println("smove命令执行结果 " + jedis.smove("append1", "append2", "a"));
for (String string : jedis.smembers("append1")) {
System.out.print(string + " ");
}
System.out.println();
for (String string : jedis.smembers("append2")) {
System.out.print(string + " ");
}
smove命令执行结果 1
a b c
a b c d e
smove命令执行结果 1
b c
a b c d e
SPOP
spop命令用于随机从set集合中弹出一个元素。若无元素或不存在该key则返回null。
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.sadd("append1", "a", "b", "c", "e");
jedis.sadd("append2", "a", "b", "c", "d");
System.out.println("spop命令执行结果 " + jedis.spop("append1"));
System.out.println("spop命令执行结果 " + jedis.spop("append2"));
System.out.println("spop命令执行结果 " + jedis.spop("append3"));
spop命令执行结果 c
spop命令执行结果 b
spop命令执行结果 null
SRANDMEMBER
srandmember命令用于从set集合中获取指定个数的元素,若元素大于set集合元素个数则获取全部的集合元素,若count为负数则获取绝对值后的count个元素,若绝对值超过元素数量则会出现一个元素出现多次的情况。
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.sadd("append1", "a", "b", "c", "e");
System.out.println("srandmember命令执行结果 " + jedis.srandmember("append1"));
System.out.println("srandmember命令执行结果 " + jedis.srandmember("append2"));
srandmember命令执行结果 e
srandmember命令执行结果 null
SREM
srem命令用于删除指定的元素,如果key不存在则返回0否则返回被移除元素的数量。
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.sadd("append1", "a", "b", "c", "e");
System.out.println("srem命令执行结果 " + jedis.srem("append1", "a", "b"));
System.out.println("srem命令执行结果 " + jedis.srem("append", "a", "b"));
srem命令执行结果 2
srem命令执行结果 0
SUNION
sunion用于获取set集合的并集。
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.sadd("append1", "a", "b", "e");
jedis.sadd("append2", "a", "b", "c", "e");
jedis.sadd("append3", "a", "b", "c", "f");
System.out.println("sunion命令执行结果 " + jedis.sunion("append1", "append2", "append"));
sunion命令执行结果 [a, b, c, e]
SUNIONSTORE
sunionstore命令与sunion类似,唯一的不同是该命令会将产生的并集存储到目标集合中,若集合中已有元素则覆盖原有元素。返回值为并集的个数。
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.sadd("append1", "a", "b", "e");
jedis.sadd("append2", "a", "b", "c", "e");
jedis.sadd("append3", "a", "b", "c", "f");
System.out.println("sunionstore命令执行结果 " + jedis.sunionstore("append4", "append1", "append2", "append3"));
sunionstore命令执行结果 5