微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NoSQL之Redis对set(集合)数据类型的操作之一

一、简介

Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加删除和查找的复杂度都是0(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能

无需集合。

二、set的相关操作

1.sadd setkey value:名称为setkey的set中添加value元素。添加成功返回1,添加失败返回0。同一个值不能重复添加

127.0.0.1:6379> sadd setkey 'hello'
(integer) 1
127.0.0.1:6379> sadd setkey 'world'
(integer) 1
127.0.0.1:6379> sadd setkey 'world'
(integer) 0
127.0.0.1:6379> smembers setkey
1) "world"
2) "hello"

添加进去的元素排序是随机的,无序的。

2.smembers setkey:获取setkey对应的集合中的所有元素。例子同1

3.srem setkey value:删除名称为setkeyt中的value元素。删除成功返回值为1

127.0.0.1:6379> smembers setkey
1) "world"
2) "hello"
127.0.0.1:6379> srem setkey hello
(integer) 1
127.0.0.1:6379> smembers setkey
1) "world"

4.spop setkey:从setkey的集合中随机弹出并且删除一个元素。

127.0.0.1:6379> smembers setkey
1) "2000"
2) "world"
3) "4000"
4) "longjian"
5) "3000"
6) "hello"
7) "zhiqiang"
127.0.0.1:6379> spop setkey
"longjian"
127.0.0.1:6379> spop setkey
"4000"
127.0.0.1:6379> spop setkey
"hello"

127.0.0.1:6379> smembers setkey
1) "world"
2) "3000"
3) "2000"
4) "zhiqiang"

无规律随机弹出,并且将该元素从集合删除

5.sdiff setkey1 setkey2:返回两个集合的差集,以setkey1为标准,谁在前面以谁为标准。

127.0.0.1:6379> smembers setkey
1) "world"
2) "3000"
3) "2000"
127.0.0.1:6379> smembers setkey1
1) "world"
2) "hello"
3) "2000"
127.0.0.1:6379> sdiff setkey setkey1
1) "3000"
127.0.0.1:6379> sdiff setkey1 setkey
1) "hello"

6.sdiffstore setkey3 setkey1 setkey2:返回setkey1,setkey2,setkey3的差集,并将结果存入到setkey3中。如果成功则返回1

127.0.0.1:6379> smembers setkey1
1) "world"
2) "hello"
3) "2000"
127.0.0.1:6379> smembers setkey2
1) "3000"
2) "world"
3) "2000"
127.0.0.1:6379> sdiffstore setkey3 setkey1 setkey2
(integer) 1
127.0.0.1:6379> smembers setkey3
1) "hello"
127.0.0.1:6379> sdiffstore setkey3 setkey2 setkey1
(integer) 1
127.0.0.1:6379> smembers setkey3
1) "3000"

从上面的例子很容易看出,如果连续用sdiifstore在一个key中存取差集的结果,是回覆盖掉之前的value。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


校园网上订餐系统系统主要功能模块包括公告内容(公告栏、轮播图)用户管理(管理员、普通用户)、内容模块(资讯分类、资讯列表)、模块管理(菜品分类、菜单、订单表),采取面对对象的开发模式进行软件的开发和硬体的架设,能很好的满足实际使用的需求,完善了对应的软体架设以及程序编码的工作,采取MySQL作为后台数据的主要存储单元,采用SSM框架、Java技术、Ajax技术进行业务系统的编码及其开发,实现了本系统的全部功能。本次报告,首先分析了研究的背景、作用、意义,为研究工作的合理性打下了基础。
从今天开始,正式进入项目阶段。本次的项目是跟着黑马的瑞吉外卖项目走的,有借鉴和使用,也有自己的观点和实现。由于本课程用到了很多前端知识(了解),所以关于前端分析的时候,我应该会选择跳过或者简略一看;大家学有余力或者对前端已经轻车熟路的可以自己看看黑马的视频。本次的项目并没有从前端到后台都自己进行搭建,虽然我也很向往这个,但是还是在学精后端再去深入前端吧,我也没有余力,只是后端的内容就已经让我头大了。
在可预见的将来,IT不会萎缩,只会越发展越庞大,最终会渗透到人类社会的每一个角落。在这个过程中会不断地产生新的领域和新的机会,我们则需要在这个风口上抓住机会。从技术层面来说,吃透测试理论和方法,掌握最少一门开发语言,能够熟练使用最少一种自动化、接口或APP测试工具将成为入行的基本要求。从业务层面来说,新兴或热点领域将来带巨大的需求量和丰厚的薪酬,这也要求我们不断的了解新的领域、学习新的知识
vulntarget-b靶场最详细通关记录。
MongoDB是一个开源、高性能、支持海量数据存储的。
【NoSQL数据库技术与应用】课本代码、课后答案(持续更新)
MongoDB 的安装详细过程
Redisredis 简介redis 采用的是单线程的 KV 模型,由 C 语言编写,1. Redis 中的事务?2. Redis 中的数据结构3. Redis 中如何保证缓存和数据库双写时的数据一致性?4. 如何使用 Redis 做异步队列和延时队列?5. Redis 中的过期策略6. Redis 中的内存淘汰机制7. Redis 中的缓存击穿,缓存穿透,缓存雪崩8. Redis 中的分布式锁9. Redis和memcache的区别10. Redis 中的持久化机制11. Red
Redis必背面试题