网站建设企业哪里好,12306网站开发多少钱,科技小制作 手工 简单,澄海建设局网站上不了文章目录 前置知识常见命令SADDSMEMBERSSISMEMBERSCARDSPOPSMOVESREM 集合间操作SINTERSINTERSTORESUNIONSUNIONSTORESDIFFSDIFFSTORE 命令小结内部编码测试内部编码 使用场景 前置知识
集合类型也是保存多个字符串类型的元素的#xff0c;但和列表类型不同的是#xff0c;在… 文章目录 前置知识常见命令SADDSMEMBERSSISMEMBERSCARDSPOPSMOVESREM 集合间操作SINTERSINTERSTORESUNIONSUNIONSTORESDIFFSDIFFSTORE 命令小结内部编码测试内部编码 使用场景 前置知识
集合类型也是保存多个字符串类型的元素的但和列表类型不同的是在集合当中
集合当中的元素之间是⽆序的集合当中的元素之间不可以重复⼀个集合中最多可以存储232 - 1个元素Redis除了⽀持集合内的增删查改操作同时还⽀持多个集合取交集、并集、差集 常见命令
SADD
将⼀个或者多个元素添加到set中。注意重复的元素⽆法添加到set中
语法SADD key member [member ...]返回值本次添加成功的元素个数 时间复杂度O(1) SMEMBERS
获取⼀个set中的所有元素注意元素间的顺序是⽆序的
语法SMEMBERS key 返回值所有元素的列表 时间复杂度O(N) SISMEMBER
判断⼀个元素在不在set中
语法SISMEMBER key member 返回值1表⽰元素在set中。0表⽰元素不在set中或者key不存在 时间复杂度O(1) SCARD
获取⼀个set的基数cardinality即set中的元素个数
语法SCARD key返回值set内的元素个数 时间复杂度O(1) SPOP
从set中删除并返回⼀个或者多个元素。注意由于set内的元素是⽆序的所以删除哪个元素实际是未定义⾏为即可以看作随机的
语法SPOP key [count] #count要删除的元素个数,随机删除返回值取出的元素 时间复杂度O(N)n是count SMOVE
将member从source上删除再插入到destination当中
语法SMOVE source destination member 返回值1表⽰移动成功0表⽰失败 时间复杂度O(1) 注意如果要移动的元素不再source当中那么此时返回0表示移动失败 SREM
将指定的元素从set中删除额可以一次删除一个/多个
语法SREM key member [member ...] 返回值本次操作删除成功的元素个数 时间复杂度O(N)N是要删除的元素个数 集合间操作 交集、并集、差集的概念 交集最终结果同时出现在两个集合当中的元素
A1 2 3 4 B3 4 5 6 A和B的交集为3 4并集将多个集合当中的数据集中放在一起如果元素有重复最终只保留一份
A1 2 3 4 B3 4 5 6 A和B的并集为1 2 3 4 5 6差集A和B做差集就是找出在A集合当中存在在B集合当中不存在的元素
A1 2 3 4 B3 4 5 6 A和B的差集为1 2 B和A的差集5 6SINTER
获取给定set的交集中的元素
语法SINTER key [key ...] #此处的每个key对应一个集合返回值交集的元素 时间复杂度O(N*M)N是最⼩的集合元素个数.M是最⼤的集合元素个数 注意1个或者多个set取交集 SINTERSTORE
获取给定set的交集中的元素并保存到⽬标set中
语法SINTERSTORE destination key [key ...]返回值交集的元素个数 时间复杂度O(N*M)N是最⼩的集合元素个数.M是最⼤的集合元素个数. SUNION
获取给定set的并集中的元素
语法SUNION key [key ...] 返回值并集的元素 时间复杂度O(N)N给定的所有集合的总的元素个数 SUNIONSTORE
获取给定set的并集中的元素并保存到⽬标set中
语法SUNIONSTORE destination key [key ...] 返回值并集的元素个数 时间复杂度O(N)N给定的所有集合的总的元素个数. SDIFF
获取给定set的差集中的元素
语法SDIFF key [key ...] 返回值差集的结果 时间复杂度O(N)N给定的所有集合的总的元素个数
注意返回的结果是第一个集合中存在而第二个集合后面集合中不存在的元素所以key的顺序很重要 SDIFFSTORE
获取给定set的差集中的元素并保存到⽬标set中
语法SDIFFSTORE destination key [key ...]返回值差集的元素个数 时间复杂度O(N)N给定的所有集合的总的元素个数 命令小结 内部编码
集合类型的内部编码有两种
intset整数集合当集合中的元素都是整数并且元素的个数⼩于set-max-intset-entries配置默认512个时Redis会选⽤intset来作为集合的内部实现从⽽减少内存的使⽤hashtable哈希表当集合类型⽆法满⾜intset的条件时Redis会使⽤hashtable作为集合的内部实现 测试内部编码
1当元素个数较少并且都为整数时内部编码为intset 2当元素个数超过512个内部编码为hashtable
3当存在元素不是整数时内部编码为hashtable 使用场景
1.集合类型⽐较典型的使⽤场景是标签
例如A⽤⼾对娱乐、体育板块⽐较感兴趣B⽤⼾对历史、新闻⽐较感兴趣这些兴趣点可以被抽象为标签。有了这些数据就可以得到喜欢同⼀个标签的⼈以及⽤⼾的共同喜好的标签这些数据对于增强⽤⼾体验和⽤⼾黏度都⾮常有帮助
例如⼀个电⼦商务⽹站会对不同标签的⽤⼾做不同的产品推荐
2.计算用户之间的共同好友 集合当中求交集
3.使用set统计UV进行去重 一个互联网产品如何衡量用户量和用户规模 1.PV-page view用户每次访问该服务器每次访问都会产生一个PV
2.UV-user view每个哟关乎访问服务器都会产生一个uv但是同一个用户多次访问不会使uv增加uv需要按照用户进行去重