Login
网站首页 > 文章中心 > 其它

[日常] Redis中set集合的使用思考

作者:小编 更新时间:2023-10-02 09:40:30 浏览量:349人看过

redis中集合的操作方法sADD 添加一个或多个成员到集合里面sCard, sSize 获取一下集合中成员的个数sDiff 在N个集合中比较出差集sDiffStore 和sDiff差不多,但是把差集结果存储在第一个key里面sInter 返回多个集合的交集sInterStore 和sInter类似,把结果存储在第一个key里面sIsMember, sContains检查参数中的成员是否是集合中的一员sMembers, sGetMembers 获得集合中的所有成员sMove 把集合中的成员从一个集合移动到另一个集合sPop 在集合中随机删除一个并获取到这个成员sRandMember 在集合中随机获取一个成员,并不删除它sRem, sRemove 在集合中删除指定成员sUnion 返回多个集合的并集sUnionStore 把多个集合的并集存储在第一个参数key里面

因为redis的集合是使用的哈希表实现的,所以呢是无序的,并且对单个元素的处理和判断都是高效的.也可以看得到在进行多个成员的处理时,时间复杂度都是O(N),对单个成员进行查找删除判断是否存在等处理时,时间复杂度都是O(1)

sPop sRandMember,这种可以在集合中取出随机值的可以用在抽奖场景下并集交集差集,可以用在实时性比较高的大量数据的取集合操作

当需要对大量的数据进行集合的操作,比如判断是否存在的需求时,可以使用布隆过滤器布隆过滤器可以理解为一个不怎么精确的 set 结构,当你使用它的 contains 方法判断某个对象是否存在时,它可能会误判.但是布隆过滤器也不是特别不精确,只要参数设置的合理,它的精确度可以控制的相对足够精确,只会有小小的误判概率.

当布隆过滤器说某个值存在时,这个值可能不存在;当它说不存在时,那就肯定不存在主要是解决大规模数据下不需要精确过滤的场景,如检查垃圾邮件地址,爬虫URL地址去重,解决缓存穿透问题等.

看网上的文章有说在内存超过指定值时,redis会删除失效数据,并且这个时候进行sADD会报超时,这种情况因为我还没遇到过这种场景,也没见过.

查看redis占用的内存大小:redis-cliinfo memory

以上就是土嘎嘎小编为大家整理的[日常] Redis中set集合的使用思考相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章