【攻克Redis】集合类型

集合

​ 集合不允许有重复元素,并且结合中的元素是无序的,不能通过索引下标直接获取,Redis支持集合内的增删改查,支持多个集合取交集、并集、差集

命令
集合内操作
#添加元素,返回结果为添加成功的个数
sadd key element [element ...]
#删除元素,返回结果为删除成功的个数
srem key element [element ...]
#计算元素个数,使用redis内部变量,不会遍历集合所有元素,时间复杂度为O(1)
scard key
#判断元素是否在集合中,存在返回1,反之返回0
sismember key element
#随机从集合返回指定个数元素,[count]是可选参数,如果不写默认为1,返回的元素不会真实的从集合中删除
srandmember key [count]
#从集合随机弹出元素,真实的从集合中移除元素
spop key
#获取所有元素(无序)
smembers key
集合间的操作

前提:

  • 有两个集合:是user:1:follow和user:2:follow

  • 集合添加元素,如下:

    127.0.0.1:6379> sadd user:1:follow it music his sports 
    (integer) 4 
    127.0.0.1:6379> sadd user:2:follow it news ent sports 
    (integer) 4

实践:

#求两个集合的交集
sinter user:1:follow user:2:follow
#求多个集合的并集
suinon key [key ...]
#求多个集合的差集
sdiff key [key ...]

这里写图片描述

#将交集、并集、差集的结果保存
sinterstore destination key [key ...] 
suionstore  destination key [key ...] 
sdiffstore  destination key [key ...]

举例说明:

127.0.0.1:6379> sinterstore user:1_2:inter user:1:follow user:2:follow (integer) 2 
127.0.0.1:6379> type user:1_2:inter 
set 
127.0.0.1:6379> smembers user:1_2:inter 
1) "it" 
2) "sports"

这里写图片描述

内部编码
intset(整数集合):当集合中的元素都是整数且元素个数小于set-maxintset-entries配置(默认512个)
hashtable(哈希表):当集合类型无法满足intset的条件时,Redis会使 用hashtable作为集合的内部实现
使用场景
  1. 添加用户赞数
  2. 取消用户赞数
  3. 展示获取赞数最多的十个用户
  4. 展示用户信息以及用户分数
命令描述
zadd user:ranking:2016_03_15 mike countmike用户添加指定赞数
zrem user:ranking:2016_03_15 mike删除mike用户赞数
zrevrangebyrank user:ranking:2016_03_15 0 9展示获取赞数最多的十个用户
zscore user:ranking:2016_03_15 mike用户分数
zrank user:ranking:2016_03_15 mike用户排名
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

女汉纸一枚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值