免费网站建设平台 iis,台州网站推广外包,做一个在线交易网站需要多少钱,滨州的网站建设Set 常用命令saddsmemberssismemberscardspopsmovesrem集合间操作sinter 交集sinterstoresunion 并集sunionstoresdiff 差集sdiffstore 命令总结 内部编码应用场景使用 set来保存用户的“标签” set(集合)就是把一些有关联的数据放刀一起。 它与list的区别如下#xff1a; 集合… Set 常用命令saddsmemberssismemberscardspopsmovesrem集合间操作sinter 交集sinterstoresunion 并集sunionstoresdiff 差集sdiffstore 命令总结 内部编码应用场景使用 set来保存用户的“标签” set(集合)就是把一些有关联的数据放刀一起。 它与list的区别如下 集合中的元素是无序的 这里说的有序是指变换顺序后就是不同的list,具体大致如下 list [1, 2, 3] 和 [2, 1, 3] 是两个不同的list而set[1, 2, 3] 和[2, 1, 3]是同一个集合集合中的元素是不能重复的。
集合中的元素叫做 member。
常用命令
sadd
作用将⼀个或者多个元素添加到 set 中。注意重复的元素⽆法添加到 set 中。 语法SADD key member [member ...] 返回值本次添加成功的元素个数。 smembers
作用获取⼀个 set 中的所有元素注意元素间的顺序是⽆序的。 语法SMEMBERS key sismember
作用判断⼀个元素在不在 set 中。 语法SISMEMBER key member 返回值1 表⽰元素在 set 中。0 表⽰元素不在 set 中或者 key 不存在。 scard
作用用于获取集合中成员的数量 语法SCARD key
spop
作用从set中随机删除一个或多个 member 并返回一个或多个随机member。 语法SPOP key [count] smove
作用把member 从 source 上删除再插入到 destination 中。 语法 SMOVE source destination member 返回值1 表⽰移动成功0 表⽰失败。 如果此时有个 key2 里面 有 member元素 4了再从key3中把这个 member元素4 移动 key2时key3中 4 会被删除key2中不会新增多一个4。
srem
作用将指定的 member 从 set 中删除。 语法 SREM key member [member ...] 返回值本次操作删除的元素个数。 集合间操作
sinter 交集
作用获取给定 set 的交集中的元素。 语法SINTER key [key ...] 返回值交集的元素。
sinterstore
作用获取给定 set 的交集中的元素并保存到⽬标 set 中。 语法SINTERSTORE destination key [key ...] 返回值交集的元素个数。
sunion 并集
作用获取给定 set 的并集中的元素。 语法SUNION key [key ...]
sunionstore
作用获取给定 set 的并集中的元素并保存到⽬标 set 中。 语法SUNIONSTORE destination key [key ...] 返回值并集的元素个数。 sdiff 差集
作用获取给定 set 的差集中的元素。 语法SDIFF key [key ...]
sdiffstore
作用获取给定 set 的差集中的元素并保存到⽬标 set 中 语法SDIFFSTORE destination key [key ...]
命令总结
命令时间复杂度sadd key element [element …]O(k)k是元素个数srem key element [element …]O(k)k是元素个数scard keyO(1)sismember key elementO(1)srandmember key [count]O(n)n 是 countspop key [count]O(n)n 是 countsmembers keyO(k), k 是元素个数sinter key [key …] sitnerstoreO(m * k)sunion key [key …] sunionstoreO(k)k 是多个集合的元素个数总和sdiff key [key …] sdiffstoreO(k)k 是多个集合的元素个数总和
内部编码
集合类型的内部编码有两种
intset整数集合当集合中的元素都是整数并且元素的个数⼩于 set-max-intset-entries 配置默认 512 个时Redis 会选⽤ intset 来作为集合的内部实现从⽽减少内存的使⽤。hashtable哈希表当集合类型⽆法满⾜ intset 的条件时Redis 会使⽤ hashtable 作为集合的内部实现。
intset是为了节省空间做出的特定优化只有当元素全为整数并且元素个数不是很多的时候才会被优化菜intset。
应用场景
使用 set来保存用户的“标签”
集合类型比较典型的使⽤场景是标签tag。例如 A 用户对娱乐、体育板块比较感兴趣B 用户 对历史、新闻比较感兴趣这些兴趣点可以被抽象为标签。有了这些数据就可以得到喜欢同⼀个标签的⼈以及用户的共同喜好的标签这些数据对于增强用户体验和用户黏度都⾮常有帮助。 例如⼀个电⼦商务⽹站会对不同标签的用户做不同的产品推荐或者例如qq的好友推荐等。