redis-set
在 Redis 中,Set 是一种无序集合数据结构,可以高效地存储唯一的值,并支持交集、并集、差集等操作,非常适合实现共同好友、共同关注等功能。以下是一些关于 Redis Set 的操作和示例:
基本命令和用法
1.添加元素
- SADD将一个或多个元素添加到集合中,如果元素已存在,则会自动忽略。
SADD friends:user_a “Alice” “Bob” “Charlie” “David”
SADD friends:user_b “Charlie” “David” “Eve” “Frank”
2.查看集合中的元素 - SMEMBERS返回集合中的所有元素。
SMEMBERS friends:user_a
SMEMBERS friends:user_b
3.求交集 - SINTER找出两个集合的交集(共同好友)。
SINTER friends:user_a friends:user_b
4.求并集 - SUNION返回两个集合的并集(所有好友)。
SUNION friends:user_a friends:user_b
5.求差集 - SDIFF返回在第一个集合中有但在其他集合中没有的元素。
SDIFF friends:user_a friends:user_b # 返回 user_a 独有的好友
SDIFF friends:user_b friends:user_a # 返回 user_b 独有的好友
6.获取集合元素个数
- SCARD获取集合中元素的数量。
SCARD friends:user_a
SCARD friends:user_b
7.检查元素是否存在
- SISMEMBER判断某个元素是否在集合中。
SISMEMBER friends:user_a “Alice” # 返回 1 表示存在,0 表示不存在
实际示例:共同好友、共同关注
假设我们想找出 user_a 和 user_b 的共同好友:
添加用户的好友
SADD friends:user_a “Alice” “Bob” “Charlie” “David”
SADD friends:user_b “Charlie” “David” “Eve” “Frank”
找出共同好友
SINTER friends:user_a friends:user_b
输出: “Charlie”, “David”
并集操作示例
获取所有好友(并集)
SUNION friends:user_a friends:user_b
输出: “Alice”, “Bob”, “Charlie”, “David”, “Eve”, “Frank”
差集操作示例
获取仅属于 user_a 的好友
SDIFF friends:user_a friends:user_b
输出: “Alice”, “Bob”
常见应用场景
1.社交网络:计算共同好友、共同关注、共同兴趣等。
2.推荐系统:基于用户关注、收藏等数据,快速找到共同的偏好。
3.权限管理:将用户的权限存入集合中,可以快速进行权限的交集和差集计算。
Redis Set 提供的高效集合操作,可以极大地简化和加速社交网络中的关系计算等场景。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.