Redis实战(5)-数据结构Set实战之过滤用户注册重复提交的信息

摘要:毫无疑问,集合Set同样也是缓存中间件Redis中其中一个重要的数据结构,其内部存储的元素/成员具有“唯一”、“随机”等特性,在实际的项目开发中同样具有相当广泛的应用场景。本文我们将介绍并实战一种比较典型的业务场景~“重复提交”,即如何利用集合Set的相关特性实现“用户注册时过滤重复提交的消息”!

内容:在前面几篇文章中,我们介绍了Redis的数据结构~列表List,简单介绍了其基本特性及其在实际项目中比较常见的、典型的应用场景!从本文开始,我们将着手介绍并实战Redis的另外一种数据结构~集合Set,介绍其基本的特性、在Dos环境下的命令行列表以及在Spring Boot2.0搭建的项目下实际应用场景的代码实战等!

Redis的数据结构-集合Set 跟 我们数学中的集合Set、JavaSE中的集合Set可以说几乎是相同的东西,,其特性均为: “无序”、“唯一”,即集合Set中存储的元素是没有顺序且不重复的!

除此之外,其底层设计亦具有“异曲同工”之妙,即采用哈希表来实现的,故而其相应的操作如添加、删除、查找的复杂度都是 O(1) 。

一、DOS命令行的实操(基于redis-cli.exe工具即可实践)

下面我们先采用 DOS下命令行的方式 来简单的认识并实践集合Set的相关命令,包括其常见的操作命令和“数学层面”集合的操作命令,如下图所示:

(1)常见的操作命令无非就是“新增”、“查询-获取集合中的元素列表”、“查询-获取集合中的成员数目”、“查询-获取集合中随机个数的元素列表”、“查询-判断某个元素是否为集合中的成员”、“删除-移除集合中的元素”等。

下面我们贴出几个比较典型、常见的操作命令所对应的实际操作吧,其中相应命令的含义各位小伙伴可以对照着上面那张图进行查看!

127.0.0.1:6379> SADD classOneStudents jacky xiaoming debug michael white
(integer) 5
127.0.0.1:6379> SMEMBERS classOneStudents
1) "jacky"
2) "michael" 
3) "debug"
4) "xiaoming"
5) "white"
127.0.0.1:6379> SCARD classOneStudents
(integer) 5
127.0.0.1:6379> SADD classTwoStudents jacky xiaohong mary
(integer) 3
127.0.0.1:6379> SISMEMBER jacky classOneStudents
(integer) 0
127.0.0.1:6379> SISMEMBER classOneStudents jacky
(integer) 1
127.0.0.1:6379> SPOP classOneStudents
"white"
127.0.0.1:6379> SMEMBERS classOneStudents
1) "debug"
2) "jacky"
3) "xiaoming"
4) "michael"
127.0.0.1:6379> SRANDMEMBER classOneStudents 1
1) "jacky"
127.0.0.1:6379> SRANDMEMBER classOneStudents 3
1) "michael"
2) "xiaoming"
3) "debug"
127.0.0.1:6379> SRANDMEMBER classOneStudents 10
1) "jacky"
2) "michael"
3) "xiaoming"
4) "debug"

(2)而“数学层面”集合的操作命令则比较有意思,在这里我们主要介绍“交集”、“差集”和“并集”这三个操作命令,如下图所示:

同样的道理,我们依旧贴出这几个操作命令所对应的DOS操作,相应命令的含义各位小伙伴可以对照着上面那张图进行查看!

127.0.0.1:6379> SDIFF classOneStudents classTwoStudents
1) "white"
2) "xiaoming"
3) "debug"
4) "michael"
127.0.0.1:6379> SDIFF classTwoStudents classOneStudents
1) "xiaohong"
2) "mary"
127.0.0.1:6379> SINTER classOneStudents classTwoStudents
1) "jacky"
127.0.0.1:6379> SUNION classOneStudents classTwoStudents
1) "debug"
2) "jacky"
3) "xiaohong"
4) "xiaoming"
5) "michael"
6) "mary"

更多请见:http://www.mark-to-win.com/tutorial/51071.html 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值