redis 中Set类型 及常用命令(附有示例)

目录​​​​​​​

一、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都指向同一个内部值

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

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

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值