集合类型中的每个元素都是不同的,且没有顺序。一个集合类型键可以存储2的32次方 - 1个字符串,可以进行多个集合之间的并集,交集,差集运算
命令
添加/删除元素,返回集合中所有元素
判断元素是否存在集合中
集合运算
sdiff差集,sinter交集,sunion并集获取集合中元素个数
从集合中弹出一个元素
因为集合是无序的,所有会随机弹出一个元素应用
1.存储文章标签
对于一些文章,可能对应多个标签,比如一篇关于laravel的文章,相关标签可能有PHP, Laravel,Blog等,而且这些标签也可以根据需求,单独添加,删除或修改,那么标签就不合适与文章标题,作者,正文等数据一起存储散列类型中了,可以存在集合中。通过文章ID作为键名保存在集合中
还可以应用记录相关的功能,比如投票系统,每个用户每天只能投一票
2.通过标签搜索文章
还有一种场景就是,一个web网站中,需要通过标签分类获取该标签中所有的文章的时候,如果用关系型数据库来实现的话,需要文章,标签,文章-标签关系表三表联查来获取,而用集合的话,只需要用标签作为键名,保存文章ID集合,如果所有某单个标签的所有文章,只需要用smembers tag:redis:posts 就可以获取redis标签对应的所有文章ID,如果要获取同时属于mysql,redis,php三个标签的文章,只需要求这三个标签键的交集即可。但是这么做,通过会有一个小问题,就是如果这是这么做实现按标签分类显示文章,如果有需求安装文章的发布或更新的最新事件倒排显示的话,是不能满足的。在后续的文章中,分享排序问题。