@Autowired
private StringRedisTemplate stringRedisTemplate;
@Test
public void testSet() {
stringRedisTemplate.delete("testSet");
//sadd key value1 value2
//将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略,
//假如集合 key 不存在,则创建一个只包含添加的元素作成员的集合
//当集合 key 不是集合类型时,返回一个错误
Long saddResult = stringRedisTemplate.opsForSet().add("testSet", "1", "2");
System.out.println("\tsadd key value1 value2:" + saddResult);
System.out.println(stringRedisTemplate.opsForSet().members("testSet"));
saddResult = stringRedisTemplate.boundSetOps("testSet").add("3", "4");
System.out.println("\tsadd key value1 value2:" + saddResult);
System.out.println(stringRedisTemplate.opsForSet().members("testSet"));
//scard key
//返回集合中元素的数量
Long scardResult = stringRedisTemplate.opsForSet().size("testSet");
System.out.println("\tscard key:" + scardResult);
System.out.println(stringRedisTemplate.opsForSet().members("testSet"));
//sdiff key1 key2
//返回第一个集合与其他集合之间的差异
stringRedisTemplate.delete("testSet01");
stringRedisTemplate.delete("testSet02");
stringRedisTemplate.opsForSet().add("testSet01", "1", "2", "3", "4");
stringRedisTemplate.opsForSet().add("testSet02", "3", "4", "5", "6");
Set<String> sdiffResult = stringRedisTemplate.opsForSet().difference("testSet01", "testSet02");
System.out.println("\tsdiff key1 key2:" + sdiffResult);
//sinter key1 key2
//返回给定所有给定集合的交集, 不存在的集合 key 被视为空集, 当给定集合当中有一个空集时,结果也为空集
Set<String> sinterResult = stringRedisTemplate.opsForSet().intersect("testSet01", "testSet02");
System.out.println("\tsinter key1 key2:" + sinterResult);
//sunion key1 key2
//返回给定集合的并集,不存在的集合 key 被视为空集
Set<String> sunionResult = stringRedisTemplate.opsForSet().union("testSet01", "testSet02");
System.out.println("\tsunion key1 key2:" + sunionResult);
//sdiffstore des key1 key2
//将给定集合之间的差集存储在指定的集合中,如果指定的集合 key 已存在,则会被覆盖
Long sdiffstoreResult = stringRedisTemplate.opsForSet().differenceAndStore("testSet01", "testSet02", "diffTestSet");
System.out.println("\tsdiffstore des key1 key2:" + sdiffstoreResult);
//sinterstore des key1 key2
//将给定集合之间的交集存储在指定的集合中,如果指定的集合已经存在,则将其覆盖
Long sinterstoreResult = stringRedisTemplate.opsForSet().intersectAndStore("testSet01", "testSet02", "interTestSet");
System.out.println("\tsinterstore des key1 key2:" + sinterstoreResult);
//sunionstore des key1 key2
//将给定集合的并集存储在指定的集合 des 中,如果 des 已经存在,则将其覆盖
Long sunionstoreResult = stringRedisTemplate.opsForSet().unionAndStore("testSet01", "testSet02", "unionTestSet");
System.out.println("\tsunionstore des key1 key2:" + sunionstoreResult);
//sismember key value
//判断成员元素是否是集合的成员
Boolean sismemberResult = stringRedisTemplate.opsForSet().isMember("testSet", "1");
System.out.println("\tsismember key value:" + sismemberResult);
//smembers key
//返回集合中的所有的成员,不存在的集合 key 被视为空集合
Set<String> smembersResult = stringRedisTemplate.opsForSet().members("testSet");
System.out.println("\tsmembers key:" + smembersResult);
//spop key [count]
//用于移除集合中的指定 key 的一个或多个随机元素,移除后会返回移除的元素
String spopResult = stringRedisTemplate.opsForSet().pop("testSet");
System.out.println("\tspop key:" + spopResult);
System.out.println(stringRedisTemplate.opsForSet().members("testSet"));
//srandmember key count
//返回集合中的一个随机元素
//如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同
//如果 count 大于等于集合基数,那么返回整个集合
//如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值
List<String> srandmemberResult = stringRedisTemplate.opsForSet().randomMembers("testSet", 2);
System.out.println("\tsrandmember key count:" + srandmemberResult);
System.out.println(stringRedisTemplate.opsForSet().members("testSet"));
//srem key member1 member2
//用于移除集合中的一个或多个成员元素,不存在的成员元素会被忽略,当 key 不是集合类型,返回一个错误
Long sremResult = stringRedisTemplate.opsForSet().remove("testSet", "2");
System.out.println("\tsrem key member1 member2:" + sremResult);
System.out.println(stringRedisTemplate.opsForSet().members("testSet"));
}
StringRedisTemplate方法和Redis语法对应关系(Set)
最新推荐文章于 2024-02-21 13:30:04 发布