Redis数据结构和内部编码--集合(Set)
2017-07-03 00:20
681 查看
Redis数据结构和内部编码--集合(Set)
一.概念
集合也是用来存储多个字符串元素,但和列表示有区别的,集合中的元素是无序且无重复的,不能用下标来获取元素。在Redis中,一个集合最多可以存储2^32个元素,除了支持对集合的增删改查外,还支持对多个集合取交集、并集、差集。二. 命令
2.1 添加元素
命令:sadd key value[value2…],返回添加成功的元素个数
例如:sadd sets v1 v2
返回:2
2.2 删除元素
命令:srem key value[value2…],返回成功删除的元素个数
例如:sadd sets v1 v2 v3
srem sets v2 v3
返回:2
2.3 计算元素个数
命令:scard key
例如:sadd sets v1 v2 v3
scard sets
返回:3
2.4 判断元素是否在集合中
命令: sismember key element,如果元素在集合中返回1,否则返回0
例如:sadd sets v1 v2 v3
sismember sets v1
返回:1
2.5 随机从集合中返回指定个数的元素
命令: srandmember key [count], count为可选参数,不选表示1.
例如:sadd sets v1 v2 v3
srandmember sets 2
返回:集合sets中任意的2个元素
2.6 从集合中随机弹出元素
命令: spop key [count], count为可选参数,不选表示1.
例如: sadd sets v1 v2 v3
spopsets 2
返回:随机弹出的2个元素
2.7 获取所有元素
命令:smembers key
例如:sadd sets v1 v2 v3
smembrs sets
返回:v1
v3
v2
2.8 求多个集合的交集
命令:sinter key[key2..]
例如:sadd set1 v1 v2
sadd set2 v2 v3 v4
sinter set1 set2
返回:v2
2.9 求多个集合的并集
命令:sunion key[key2..]
例如:sadd set1 v1 v2
sadd set2 v2 v3 v4
sunion set1 set2
返回:v1
v2
v3
v4
2.10 求多个集合的差集
命令:sdiff key[key2..] 返回所有属于集合key且不属于集合key2的元素
例如:sadd set1 v1 v2
sadd set2 v2 v3 v4
sdiff set1 set2
返回:v1
v3
v4
2.11将交集、并集、差集的结果保存
命令:
(1) sinterstore destinationkey[key2…]
(2) sunionstore destinationkey[key2…]
(3) sdiffstore destination key[key2…]
例如:sadd set1 v1 v2
sadd set2 v2 v3 v4
sinterstore interstore set1 set2
smembers interstore
返回:v2
三. set命令的时间复杂度
四. 内部编码
集合类型的内部编码有两种:
(1) intset(整数集合),当集合中的元素都是整数,且元素个数小于set-max-intset-entries配置(默认512个)时,Redis会采用intset来做为集合的内部实现,从而减少内存的使用。
(2) hashtable(哈希表),当集合类型无法满足intset的条件时,Redis就会使用hashtable做为集合的内部实现。
五. 集合的使用场景及方案
(1)sadd = Tagging(标签)
(2)spop/srandmember=Random item生产随机数(抽奖)
(3)sadd+sinter=Social Graph(社交生活)
相关文章推荐
- Redis数据结构和内部编码--有序集合(SortedSet)
- redis内部数据结构总结(7)intset
- Redis的五种数据结构的内部编码
- [redis数据结构] 之 set集合
- Redis数据结构和内部编码--字符串
- Redis数据结构和内部编码--列表(list)
- redis 数据结构 - 有序集合 sort set
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
- redis的key的数据结构、内部编码和单线程架构
- Redis内部数据结构详解之整数集合(intset)
- Redis数据结构和内部编码--哈希(hash)
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
- redis 数据结构 - 无序集合 set
- 【Redis笔记(五)】 Redis数据结构 - set集合
- Redis内部数据结构详解之双向链表(linkedlist)
- Redis源码分析(十三)——集合类型t_set
- redis内部数据结构
- 通过编码分别测试ArrayList 和 LinkedList 添加、删除对象时的耗时情况(精确到纳秒),并总结出以上两种集合的数据结构的不同之处。
- Redis order set 有序集合
- redisbook笔记——redis内部数据结构