结构特点
set的实现原理是利用Hash算法为key,value为null的HashMap.特点是无序不可重复.
场景一:微博点赞
key为文章的编号,value为用户ID,调用sadd方法实现.set中的数据量就是文章的点赞数量.
场景二:朋友圈点赞,推荐可能认识的人
key为朋友圈文章的id,value为用户ID,即可记录朋友圈点赞数,利用集合的交集,可以实现共同好友的记录,来实现推荐可能认识的人.
源码分析
public Long sadd(byte[] key, byte[]... members) { this.checkIsInMultiOrPipeline(); this.client.sadd(key, members); return this.client.getIntegerReply(); }
checkIsInMultiOrPipeline 检查连接是否可用,并且是否有别的线程在操作该值.然后调用 RedisClient 客户端中的sadd方法,该方法已经封装了redis的操作命令,两个参数分别为key和value,然后将该结果影响的行数返回,我们可以根据返回的行数来确认加入了几条数据.
总结
redis中set集合的应用场景比较少,不如string和list,利用他的不可重复性,来实现微博朋友圈的点赞记录,也是比较不错的选择.