1.set
1. 无序且独一无二的string元素集合
sadd key member1 [member2]:增加多个成员
scard key:统计成员数
sdiff key1 [key2]:找出两个集合的差集,key1中key2没有的成员
sidffstore des key1 [key2]:将差集保存到des集合中
sinter key1 [key2]:求两个集合的交集
sismember key member:判断member是否为key的成员
smembers key:返回所有成员
smove src des member:将成员member从集合src移到des中
spop key:随机弹出一个成员
srandmember key [count]:随机返回一个或多个成员,count为限制返回的总数
srem key member1 [member2]:移除成员
sunion key1 [key2]:求并集
2.在java程序中
// 请把RedisTemplate值序列化器设置为StringRedisSerializer测试该代码片段
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
RedisTemplate redisTemplate = applicationContext.getBean(RedisTemplate.class);
Set set = null;
// 将元素加入列表
redisTemplate.boundSetOps("set1").add("v1", "v2", "v3", "v4", "v5", "v6");
redisTemplate.boundSetOps("set2").add("v0", "v2", "v4", "v6", "v8");
// 求集合长度
redisTemplate.opsForSet().size("set1");
// 求差集
set = redisTemplate.opsForSet().difference("set1", "set2");
// 求并集
set = redisTemplate.opsForSet().intersect("set1", "set2");
// 判断是否集合中的元素
boolean exists = redisTemplate.opsForSet().isMember("set1", "v1");
// 获取集合所有元素
set = redisTemplate.opsForSet().members("set1");
// 从集合中随机弹出一个元素
String val = (String) redisTemplate.opsForSet().pop("set1");
// 随机获取一个集合的元素
val = (String) redisTemplate.opsForSet().randomMember("set1");
// 随机获取2个集合的元素
List list = redisTemplate.opsForSet().randomMembers("set1", 2L);
// 删除一个集合的元素,参数可以是多个
redisTemplate.opsForSet().remove("set1", "v1");
// 求两个集合的并集
redisTemplate.opsForSet().union("set1", "set2");
// 求两个集合的差集,并保存到集合diff_set中
redisTemplate.opsForSet().differenceAndStore("set1", "set2", "diff_set");
// 求两个集合的交集,并保存到集合inter_set中
redisTemplate.opsForSet().intersectAndStore("set1", "set2", "inter_set");
// 求两个集合的并集,并保存到集合union_set中
redisTemplate.opsForSet().unionAndStore("set1", "set2", "union_set");