redis的set类型

文章介绍了Redis中的Set数据结构,类似于Java的HashSet,基于哈希表实现,支持无序、不重复元素,并提供交集、并集、差集等操作。同时,讲解了HashTag机制在分布式环境下的作用,如何通过HashTag控制键的槽分配,以及其可能带来的数据倾斜问题。
摘要由CSDN通过智能技术生成

介绍

Redis 的 Set是 String 类型的无序集合,与java中的HashSet类似,它的底层也是通过哈希表实现的,它具备与HashSet类似的特征:

  • 无序
  • 元素不可重复
  • 查找快
  • 支持交集,并集,差集等功能

常用命令

  • SADD userset a b c: 给userset集合添加1个或多个元素
  • SMEMBERS userset: 查看集合userset中的所有元素
  • SREM userset a: 删除集合userset中的a元素
  • SISMEMBER userset a: 判断集合userset中是否有a元素,有返回1,没有返回0
  • SCARD userset: 返回集合userset中元素的个数
  • SINTER key1 key2: 求key1和key2的交集,如下图b和c
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PGIMc9VR-1681144496891)(null)]
  • SDIFF key1 key2: 求key1与key2的差集,比如下图的a而不是d,d是key2与key1的差集
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2B0tDjTx-1681144494814)(null)]
  • SUNION key1 key2: 求key1和key2的并集:也就是上图的a,b,c,d,两个集合的全部元素去重

HashTag机制可以影响key被分配到的slot,从而可以使用那些被限制在slot中操作。HashTag即是用{}包裹key的一个子串,如{user:}1, {user:}2。在设置了HashTag的情况下,集群会根据HashTag决定key分配到的slot, 两个key拥有相同的HashTag:{user:}, 它们会被分配到同一个slot,允许我们使用MGET命令。通常情况下,HashTag不支持嵌套,即将第一个{和第一个}中间的内容作为HashTag。若花括号中不包含任何内容则会对整个key进行散列,如{}user:。HashTag可能会使过多的key分配到同一个slot中,造成数据倾斜影响系统的吞吐量,务必谨慎使用。

练习

  1. 将下面数据用redis的set集合存储:
    • 赵东洋的好友:熊梦豪,朱豪杰,李大帅
SADD {friends:}zdy 熊梦豪  朱豪杰  李大帅

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W8gq8dNL-1681144494804)(null)]
- 熊梦豪的好友:支天旭,赵东洋,朱豪杰

SADD {friends:}xmh 支天旭  赵东洋  朱豪杰

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cidmygFN-1681144494822)(null)]
2. 利用set的命令实现下面功能:
- 计算赵东洋的好友个数

192.168.2.14:26003> SCARD {friends:}zdy                    
3
- 计算赵东洋和熊梦豪有哪些共同好友
192.168.2.14:26003> SINTER {friends:}zdy {friends:}xmh     
朱豪杰
- 查询那些人是赵东洋的好友却不是熊梦豪的好友
192.168.2.14:26003> SDIFF {friends:}zdy {friends:}xmh      
熊 梦 豪                                                      
李 大 帅
- 查询赵东洋和熊梦豪的好友总共有哪些人
192.168.2.14:26003> SUNION {friends:}zdy {friends:}xmh     
赵 东 洋                                                      
李 大 帅                                                      
朱 豪 杰                                                      
熊 梦 豪                                                      
支 天 旭
- 判断熊梦豪是否是赵东洋的好友
192.168.2.14:26003> SISMEMBER {friends:}zdy 熊梦豪          
1
- 判断赵东洋是否是熊梦豪的好友
192.168.2.14:26003> SISMEMBER {friends:}xmh 赵东洋          
1
- 将熊梦豪从赵东洋的好友列表中移除
192.168.2.14:26003> SREM {friends:}zdy 熊梦豪               
1                                                          
192.168.2.14:26003> SMEMBERS {friends:}zdy                 
李 大 帅                                                      
朱 豪 杰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值