概述
SET
该结构的特点是非整型且超过512是无序存储,整型时是有序存储,且都自动去重数据,类似于Java中HashSet
常用命令
-
往集合key中存入元素,元素存在则忽略,若key不存在则新建
SADD key member [member ...]
-
从集合key中删除元素
SREM key member [member ...]
-
获取集合key中所有元素
SMEMBERS key
-
获取集合key的元素个数
SCARD key
-
判断member元素是否存在于集合key中
SISMEMBER key member
-
从集合key中选出count个元素,元素不从key中删除
SRANDMEMBER key [count]
-
从集合key中选出count个元素,元素从key中删除
SPOP key [count]
-
不常用
SMOVE source destination member //将集合中的元素从一个键移动(删除)到另一个键(添加)。如果源集不存在或不包含指定的元素,则不执行任何操作,并返回0 SSCAN key cursor [MATCH pattern] [COUNT count] //遍历集合
运算操作
-
交集运算
SINTER key [key ...]
-
将交集结果存入新集合destination中
SINTERSTORE destination key [key ..]
-
并集运算
SUNION key [key ..]
-
将并集结果存入新集合destination中
SUNIONSTORE destination key [key ...]
-
差集运算
SDIFF key [key ...]
-
将差集结果存入新集合destination中
SDIFFSTORE destination key [key ...]
底层结构
Set 为无序的,自动去重的集合数据类型,Set 数据结构底层实现为一个value 为 null 的 字典( dict )。
-
当数据可以用整形表示时,Set集合将被编码为intset数据结构
注意超过set-max-intset-entrie将会转换为hashtable
-
当元素个数
大于 set-max-intset-entries
,或元素无法用整形表示,Set将用hashtable存储数据。set-max-intset-entries 512 // intset 能存储的最大元素个数,超过则用hashtable编码
intset详细
hashTable详细
实际应用
- 抽奖
- 参与抽奖加入集合
SADD key {userlD}
- 查看参与抽奖所有用户
SMEMBERS key
- 抽取count名中奖者
SRANDMEMBER key [count] / SPOP key [count]
- 参与抽奖加入集合
- 点赞,收藏
- 点赞
SADD like:{消息ID} {用户ID}
- 取消点赞
SREM like:{消息ID} {用户ID}
- 检查用户是否点过赞
SISMEMBER like:{消息ID} {用户ID}
- 获取点赞的用户列表
SMEMBERS like:{消息ID}
- 获取点赞用户数
SCARD like:{消息ID}
- 点赞
- 集合操作实现关注模型
- 张三关注的人
zhangsanSet
- 李四关注的人
lisiSet
- 王五关注的人
wanwuSet
- 张三李四共同关注
SINTER zhangsanSet lisiSet
- 张三关注的人(王五)同时也关注李四的人
SISMEMBER wanwuSet lisi
- 张三可能认识的人(李四的关注)
SDIFF zhangsanSet lisiSet
- 张三关注的人
- 集合操作实现筛选
- 添加商品集合
SADD brand:huawei P40
SADD brand:xiaomi mi-10
SADD brand:iPhone iphone12
SADD os:android P40 mi-10
SADD cpu:brand:intel P40 mi-10
SADD ram:8G P40 mi-10 iphone12
- 商品筛选
SINTER os:android cpu:brand:intel ram:8G 结果 {P40,mi-10}
- 添加商品集合
总结
该结构主要特点是自动去重,以及可进行不同集合间进行交并差运算,可进行去重集合之间进行运算
最后
以上就是勤恳白开水为你收集整理的Redis核心数据结构【set】【从入门到入坟】的全部内容,希望文章能够帮你解决Redis核心数据结构【set】【从入门到入坟】所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复