Redis-Set

RedisSets是Redis中用于存储唯一字符串的无序集合,常用于跟踪唯一项目、表示关系和执行集合操作如交集、并集和差集。基本操作如SADD、SREM、SISMEMBER和SCARD的时间复杂度为O(1),但SMEMBERS对大集合是O(n)。在处理大量数据时,可考虑使用SSCAN或替代方案如Bloom过滤器。当需要查询索引和数据时,RedisSearch和RedisJson可能是更好的选择。
摘要由CSDN通过智能技术生成

Redis Sets

Redis 介绍

Redis Sets是唯一字符串(成员)的无序集合,你可以使用Redis有效的进行以下三种场景
1、跟踪唯一项目(例如跟踪方位给定博客文档的所有唯一IP地址)
2、表示关系(例如,具有给定角色的所有用户的集合)
3、执行常见的集合操作,如交集、并集和差集。

例1:
为用户123 和456 存储一组喜爱的图书ID

SADD user:123:favorites 347
SADD user:123:favorites 561
SADD user:123:favorites 742
SADD user:456:favorites 561

检查用户123 是否喜欢742 和299

SISMEMBER user:123:favorites 742
SISMEMBER user:123:favorites 299

用户123 和456 共同喜欢的书籍

SINTER user:123:favorites user:456:favorites

用户123收藏了多少本书

SCARD user:123:favorites

在这里插入图片描述

限制
1<<32 -1

基本命令

SADD adds a new member to a set. 往set中添加一个新的成员
SREM removes the specified member from the set. 删除某个key 中的set 成员
SISMEMBER tests a string for set membership. 测试字符串的在哪些key 中存在
SINTER returns the set of members that two or more sets have in common (i.e., the intersection). 返回多个key 他们的set 的交集
SCARD returns the size (a.k.a. cardinality) of a set. 查询某个key 的set 大小

性能

大多数集合操作,包括添加、删除和检查项目是否为集合成员,都是O(1),意味着他们的效率很高。但是对于,具有数十万或者更多成员的大型集合,在运行SMEMBERS命令时应该格外小心,此命令为O(n),并在单个相应中返回整个集合。另外一种选择是考虑SSCAN,它运行您迭代地检索集合的所有成员。

选择

在大型数据集(或者流式数据集)上设置成员身份检查可能会占用大量的内存,如果你担心内存使用,并且不需要完美的精度,可以考虑使用Bloom过滤器或者Cuckoo 过滤器作为一个集合的替代方案。
Redis 集合经常被用作一种索引。如果您需要查询索引和查询数据,请考虑RedisSearch 和RedisJson

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值