Set类型
Redis的Set是一个无序且元素唯一的集合,支持集合运算,如添加、删除、取交集、并集、差集等。适合用于实现一些需要进行成员关系测试或集合操作的场景
用法
- SADD key member 向指定的集合里添加元素
- SREM key member 从集合里删除元素
- SISMEMBER key member 检查元素是否是集合的成员
- SINTER key [key...] 取一个或多个集合的交集
- SUNION key [key...] 取一个或多个集合的并集
- SDIFF key [key...] 取一个或多个集合的差集
业务场景
标签系统
Set可以用于存储和处理具有标签特性的数据,如商品标签、文章分类标签等
具体案例
内容平台上,用户可以给文章打上不同的标签,系统需要根据标签过滤和推荐文章
优点:
- 快速查找:使用Set判断一个元素是否属于某个集合
- 灵活的标签管理:方便删除和添加标签
- 集合运算:实现复杂的标签过滤逻辑
解决方案:
通过Set存储文章的标签集合,实现基于标签的推荐和搜索
社交网络好友关系
背景:
表示用户的好友列表,支持快速好友关系测试和好友推荐
具体案例:
在社交网络应用里,用户可以添加和删除好友,系统需要管理用户的好友关系
优点:
- 唯一性:确保好友列表不会有重复的好友
- 快速判断两个用户是否互为好友
- 利用集合运算,如差集,推荐可能认识的好友
解决方案:
使用Set类型存储用户的好友集合,实现好友关系的管理
注意事项
- Set虽然是无需的,但是Redis会保持元素的插入顺序,直到集合被重新排序
- Set中的元素唯一
- 集合运算的时候要注意结果集的大小,可能会影响性能