Redis(七):set/sadd/sismember/sinter/sdiffstore 命令源码解析
上两篇我们讲了hash和list数据类型相关的主要实现方法,同时加上前面对框架服务和string相关的功能介绍,已揭开了大部分redis的实用面纱。 现在还剩下两种数据类型: set, zset. 本篇咱们继续来看redis中的数据类型的实现: set 相关操作实现。 研究过jdk的hashmap和hashset实现的同学,肯定都是知道,set其实就是一个简化版的map,只要将map的 k->v 的形式变为 k->1 的形式就可以了。所以set只是map的一个简单包装类。 同理,对于 redis的 hash 和 set 数据类型,我们是否可以得出这么个结论呢?(如果是那样的话,我们就只需看几个set提供的特殊功能即可) 同样,我们从功能列表开始,到数据结构,再到具体实现的这么个思路,来探索redis set的实现吧。 零、redis set相关操作方法 Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。可根据应用场景需要选用该数据类型。(比如:好友/关注/粉丝/感兴趣的人/黑白名单) 从官方的手册中可以查到相关的使用方法。 1> SADD key member1 [member2] 功能: 向集合添加一个或多个成员 返回值: 本次添加到redis的member数量