集合篇
Redis
集合(Sets)
数据结构可存储一组唯一的成员。利用集合你可以添加、获取或删除成员,检查成员资格,或检索随机成员。利用排序算法,你还可以执行集合操作,如交集、联合和集合差,并计算集合的万有引力。
场景
集合的场景一般都是配合其它的功能实现一起出现。比如好友关系,共同好友,用户兴趣爱好等等。
标签系统
在内容管理系统或电子商务平台中,可以使用集合来实现标签系统,每个对象对应一个集合,集合中存储了该对象的标签,可以方便地对对象进行标签检索和分类。
$redis->sAdd('goods:1', '性价比超低', '值得入手');
// 获取全部标签
$redis->sMembers('goods:1');
用户兴趣爱好
可以使用集合来存储用户的兴趣爱好,每个用户对应一个集合,集合中存储了用户感兴趣的内容或话题,可以用于个性化推荐和内容过滤。
// 获取用户兴趣爱好
$redis->sMembers('user:1:in');
好友关系
在社交网络应用中,可以使用集合来表示用户的好友关系,每个用户对应一个集合,集合中存储了用户的好友列表,可以方便地进行好友关系的管理和查询。
// 获取用户好友
$redis->sMembers('user:1:friends');
共同关注
在社交网络应用中,可以使用集合来表示用户之间的共同关注关系,例如通过交集操作来查找两个用户共同关注的好友或内容。
// 获取这三个用户的共同好友
$redis->sInter('user:1:friends', 'user:2:friends', 'user:3:friends');
集合运算
Redis
提供了丰富的集合运算操作,包括并集、交集、差集等,可以方便地对集合进行合并、筛选和比较操作。
// 返回差集
$redis->sDiff('user:1:friends', 'user:2:friends', 'user:3:friends');
// 交集共同部分
$redis->sInter('user:1:friends', 'user:2:friends', 'user:3:friends')
// 合并去重
$redis->sUnion('user:1:friends', 'user:2:friends', 'user:3:friends')
唯一性检查
由于集合中的元素是不重复的,可以使用集合来实现数据的唯一性检查,例如检查用户提交的表单数据中是否有重复的项。
投票系统
可以使用集合来实现投票系统,每个投票对应一个集合,集合中存储了参与投票的用户,可以通过集合的基数操作来统计投票数和去重。
// 投票的用户
$redis->sAdd('vote:1', '用户:1', '用户:2');
// 投票数
$redis->sSize('vote:1')
在线用户统计
可以使用集合来存储在线用户的ID,通过集合的基数操作可以实时统计在线用户数和检查用户是否在线。
if ($redis->sIsMember('online', '用户:1')) {
// todo
}
协作
如果你有更多的场景使用用例,可以通过github
提交pr
请求。有问题可以开issue
。
编辑此页面