目录​​​​​​​

一、Redis中Set介绍

特点:

二、常用命令

三、示例

sadd ..

smembers  

simembers

scard

srem ..

spop

srandmember

smove

sinter

sunion

sdiff

 四、Set底层的数据结构


一、Redis中Set介绍

Redis set 对外提供的功能与list类似,是一个列表的功能

特点:

set是可以自动排重的,

        当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的

        redis的Set是String类型的无序集合,它底层其实是一个value为null的hash表,所以添加、删除、查找的复杂度都是O(1)

        一个算法,随着数据的增加,执行时间的长短,如果是O(1),数据增加,查找数据的时间不变

二、常用命令

        

命令描述
sadd <key> <value1> <value2>..添加一个或多个元素到集合中
smembers <key> 取出该集合的所有值
 simembers <key> <value>判断集合中是否含有该<value>值
scard <key>返回该集合的元素个数
srem <key><value1><value>删除集合中和某几个元素
spop <key>随机从该集合吐出一个元素
srandmember <key> <n>随机从该集合中取出n个值,不会从集合中删除
smove <source> <destination> <value>把集合中一个值从一个集合移动到另一个集合
sinter <key1> <key2>返回两个集合的交集元素
sunion <key1> <key2>返回两个集合并集元素
sdiff <key1> <key2>返回两个集合中的差集元素 (key1中的,不包含key2中的)

三、示例

sadd <key> <value1> <value2>..

        将一个或多个member元素加入到集合key中,已经存在的numnber将会被忽略

smembers <key> 

        取出该集合的所有值

simembers <key> <value>

        判断集合中是否含有该<value>值,有返回1,没有返回0

scard <key>

        返回该集合的元素个数

srem <key><value1><value> ..

        删除集合中一个或几个元素

spop <key>

        随机从该集合吐出一个元素,吐出后元素会消失

srandmember <key> <n>

        随机从该集合中取出n个值,不会从集合中删除

smove <source> <destination> <value>

        把集合中一个值从一个集合移动到另一个集合

        这里主要用到了2个点,一个是这个smove的移动,还有就是因为移动的是v3到k2中,而k2中已经有了一个v3 而set是自动排重的,所以出现下面的结果

sinter <key1> <key2>

        返回两个集合的交集元素

                交集也就是两个集合共有的元素

sunion <key1> <key2>

        返回两个集合并集元素

                并集也就是2个集合的所有元素并去重的结果

sdiff <key1> <key2>

        返回两个集合中的差集元素 (key1中的,不包含key2中的)

 四、Set底层的数据结构

Set数据结构是dict字典,字典是用哈希表实现的。

Java中的HashSet 的内部实现使用的是HashMap,只不过所有的value都指向同一个对象

Redis的Set结构也是一样,它的内部也是用hash结构,所有的value都指向同一个内部值

好了,这次的文章就到这里,喜欢的同学可以点赞收藏,遇到问题,可以评论,或者留言,我一定会第一时间给到回馈,感谢观看!!

注:本文为本人学习时心得分享,有讲错或者需要改正的地方,请指正,我会虚心接受

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐