门户网站收录,网站 参数,企业网站模板建站怎么用,霸州网站开发#x1f9d1;#x1f4bb;作者名称#xff1a;DaenCode #x1f3a4;作者简介#xff1a;啥技术都喜欢捣鼓捣鼓#xff0c;喜欢分享技术、经验、生活。 #x1f60e;人生感悟#xff1a;尝尽人生百味#xff0c;方知世间冷暖。 #x1f4d6;所属专栏#xff1a;Re… 作者名称DaenCode 作者简介啥技术都喜欢捣鼓捣鼓喜欢分享技术、经验、生活。 人生感悟尝尽人生百味方知世间冷暖。 所属专栏Redis从头学 文章目录 前言Set数据类型分析Set类型实战应用场景用户画像去重功能生活中的例子代码示例 共同关注、专属粉丝生活中的例子代码示例 写在最后 前言 之前的篇章对Redis的String、List、Hash数据类型已经做出了具体分析并举例说明了其具体的实战场景本文就结合Set数据类型结构的特性一起探讨其实战中的应用场景并以社交平台中的引力签、共同关注好友、是否是某人的粉丝等等为例来展示set数据类型的特点。 Set数据类型分析
Redis中的Set数据类型是一种无序、不重复的集合它提供了高效的集合操作例如添加、删除、判断元素是否存在等。下面对Redis Set数据类型进行一些分析
无序性Set中的元素是无序存储的每次获取的顺序可能不同。这使得Set非常适合于存储不需要特定顺序的元素。元素的唯一性Set保证其中的元素都是唯一的即不会存在重复的元素。当向Set中添加已经存在的元素时新元素将被忽略。高效的添加、删除和判断操作Set提供了O(1)时间复杂度的添加、删除和判断元素是否存在的操作。这归功于Redis内部使用了哈希表来实现Set数据类型。集合运算Redis的Set数据类型支持集合运算例如交集、并集、差集等操作。可以对多个Set进行集合运算方便进行数据分析和处理。存储大量的元素Set可以存储大量的元素并且在数量上没有明确的限制。这使得Set非常适用于需要存储和处理大型集合的场景。
Set类型实战应用场景
Set常用于存储用户标签、好友列表、点赞列表、投票系统等场景。它可以快速判断元素是否存在进行集合运算满足各种实时数据处理的需求。
总而言之Redis的Set数据类型提供了高效、灵活且功能强大的集合操作适用于需要存储和处理无序且不重复元素的场景。它在实时数据分析、用户关系管理等方面具有广泛的应用。
用户画像去重功能
生活中的例子
比如说交友平台的用户标签以Soul平台为例或者王者荣耀中的赛季标签等等。
代码示例
利用set数据类型无序且元素不可重复的特点。通过members API来取出所有的用户画像并自动的进行去重。
Test
void userProfile(){BoundSetOperations operationsredisTemplate.boundSetOps(user:tagg:1);operations.add(car,student,rich,dog,dog);SetString setoperations.members();System.out.println(此用户画像为set);
}运行结果 此用户画像为[car, dog, rich, student] 共同关注、专属粉丝
生活中的例子
类似于抖音或者小红书上经常会在推荐或者可能认识的人中会有灰色字体提示你们共同关注、共同好友、是否是你粉丝等等。
代码示例
通过其差集、交集、并集来实现集合间的运算命令来实现共同关注、专属粉丝等功能以及isMember来判断是否是某人的粉丝。
Testvoid testSocial(){BoundSetOperations lzOperationsredisTemplate.boundSetOps(user:lz);lzOperations.add(A,B,C,E);System.out.println(老甄的粉丝lzOperations.members());BoundSetOperations llOperationsredisTemplate.boundSetOps(user:ll);llOperations.add(A,F,C,E);System.out.println(老李的粉丝llOperations.members());//差集Set lzlzOperations.diff(user:ll);System.out.println(老甄专属粉丝lz);Set llllOperations.diff(user:lz);System.out.println(老李专属粉丝ll);//交集Set interSetlzOperations.intersect(user:ll);System.out.println(同时关注interSet);//并集Set unionSetlzOperations.union(user:ll);System.out.println(两个人的并集unionSet);//是否是某人粉丝boolean flaglzOperations.isMember(A);System.out.println(A是否是老甄的粉丝flag);
}运行结果 老甄的粉丝[A, C, E, B] 老李的粉丝[A, C, E, F] 老甄专属粉丝[B] 老李专属粉丝[F] 同时关注[A, C, E] 两个人的并集[C, F, E, B, A] A是否是老甄的粉丝true 写在最后
有关于Redis中的Set数据类型实战应用场景到此就结束了。功能演示代码的逻辑简单目的是理解Set数据类型的应用实际场景的逻辑根据具体需求而定。感谢大家的阅读希望大家在评论区对此部分内容散发讨论或者有什么其他场景也可以在评论区提出。