(六)Redis之数据结构之Set
一、常用方法
- 和List类型不同的是,Set集合中不允许出现重复的元素
- 添加/删除元素
- 获取集合中的元素
- 集合中的差集运算
- 集合中的交集运算
- 集合中的并集元算
- 扩展命令
1和2 添加/删除元素和获取集合中的元素和是否该元素
package myRedis01; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import org.junit.After; import org.junit.Test; import redis.clients.jedis.Jedis; public class JedisTest { Jedis jedis=new Jedis("127.0.0.1",6379); // 创建客户端 设置IP和端口 /** * 添加/删除元素 */ @Test public void addAndDel() { /** * set中添加和获取 */ jedis.sadd("set1","a","b","c"); jedis.sadd("set1","a","d","e"); System.out.println("不会出现重复的元素:"+"\t"+jedis.smembers("set1")); /** * 删除元素 */ jedis.srem("set1", "d","e"); System.out.println("删除两个元素后:"+"\t"+jedis.smembers("set1")); /** * 判断某个元素是否存在 */ boolean flag=jedis.sismember("set1", "a"); System.out.println("是否存在该元素"+"\t"+flag); } @After public void close() { jedis.close(); } }
3和4和5 计算差、交、并集
/** * 计算差、交、并集 */ @Test public void scal() { jedis.sadd("set5", "a", "b", "c"); jedis.sadd("set6", "b", "c", "d"); /** * 差集 * jedis.sdiff("set2","set3") 结果返回set2有但是set3没有的元素 */ Set<String> sets=jedis.sdiff("set5","set6"); System.out.println("计算差集"); for(String str:sets) { System.out.println(str); } System.out.println("============"); /** * 交集 */ System.out.println("计算交集"); Set<String> sets2=jedis.sinter("set5","set6"); for(String str:sets2) { System.out.println(str); } System.out.println("============"); /** * 计算并集 */ System.out.println("计算并集"); Set<String> sets3=jedis.sunion("set5","set6"); for(String str:sets3) { System.out.println(str); } System.out.println("============"); }
6. 扩展命令
/** * 扩展命令 */ @Test public void other() { /** * 计算元素总数 */ jedis.sadd("set7", "b", "c", "d","e"); long sum=jedis.scard("set7"); System.out.println("元素总数为:"+"\t"+sum); /** * 随机取一个元素 */ String rand=jedis.srandmember("set7"); System.out.println("随机取一个元素"+"\t"+rand); }