08 Redis Set类型操作与使用场景

Redis Set类型操作与使用场景

一、Set类型操作

​ Redis的Set结构与Java中的HashSet类似,可以看做是一个value为null的HashMap。因为也是一个hash表,因此具备与HashSet类似的特征:

​ 无序

​ 元素不可重复

​ 查找快

​ 支持交集、并集、差集等功能

​ Set的常见命令有:

​ SADD key member … :向set中添加一个或多个元素

# 添加多个值
127.0.0.1:6379> sadd user:1:friends bob jack job
3

​ SMEMBERS:获取set中的所有元素

# 获取元素
127.0.0.1:6379> smembers user:1:friends
job
bob
jack

​ SCARD key: 返回set中元素的个数

# 返回元素数量
127.0.0.1:6379> scard user:1:friends
3

​ SISMEMBER key member:判断一个元素是否存在于set中

# 判断是否存在bob(返回1为存在)
127.0.0.1:6379> sismember user:1:friends bob
1

# 判断是否存在hony(返回0为不存在)
127.0.0.1:6379> sismember user:1:friends hony
0

​ SREM key member … : 移除set中的指定元素

# 删除元素job
127.0.0.1:6379> srem user:1:friends job
1

# 查看是否删除
127.0.0.1:6379> smembers user:1:friends
bob
jack

​ SINTER key1 key2 … :求key1与key2的交集

# 创建3个元素
127.0.0.1:6379> sadd user:2:friends bob li hony
3

# 交集
127.0.0.1:6379> sinter user:1:friends user:2:friends
bob

​ SDIFF key1 key2 … :求key1与key2的差集

# 查询用户1的差集
127.0.0.1:6379> sdiff user:1:firends user:2:friends
jack

# 查询用户2的差集
127.0.0.1:6379> sdiff user:2:friends user:1:friends
hony
li

​ SUNION key1 key2 … :求key1与key2的并集

# 并集
127.0.0.1:6379> sunion user:1:friends user:2:friends
bob
hony
jack
li

​ 例如两个集合:s1和s2:

在这里插入图片描述

​ 求交集:SINTER s1 s2

​ 求s1与s2的不同:SDIFF s1 s2

在这里插入图片描述

二、使用场景

​ Set类型在Redis中主要用于存储无序且不重复的数据集合,以下是几个典型的使用场景:

共同好友/关注列表:

​ 在社交类应用中,获取两个人或多个人的共同好友或共同关注的用户,是一个常见的需求。使用Set类型可以方便地实现这个功能,只需要将每个人的好友或关注的用户ID存储在一个Set中,然后通过求交集的操作就可以得到共同好友或关注的用户列表。

标签系统:

​ 在一些需要给用户打标签的应用中,比如电商网站的商品标签、博客的标签等,每个用户可能有多个标签,而且标签之间是不重复的。这时候就可以用Set类型来存储用户的标签,方便地添加、删除和查询标签。

唯一性校验:

​ 有些场景中需要保证数据的唯一性,比如用户注册时输入的手机号或邮箱,不能重复。这时候可以用Set类型来存储已经注册过的手机号或邮箱,当用户再次输入时,只需要判断输入的值是否在Set中即可。

随机推荐:

​ 在一些需要随机展示内容的场景中,比如首页的推荐内容,可以先将需要展示的内容ID存储在一个Set中,然后随机从Set中选取几个ID来展示。这样可以保证每次展示的内容都是随机的,而且不会重复。

IP地址去重:

​ 在一些需要记录用户访问IP的应用中,比如网站访问统计、API调用次数统计等,可以使用Set类型来存储访问过的IP地址,这样可以方便地获取到去重后的IP地址列表和数量。

  • 24
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值