宿迁腾云网络网站建设公司

腾云网络 八年经验专注网站建设
  • 首页
  • 服务项目
    • 网站建设
    • 微信小程序
    • APP开发
    • SEO优化
  • 建站费用
  • 成功案例
    • 网站建设案例
    • 小程序案例
    • APP开发案例
    • SEO优化案例
  • 行业动态
    • 网站建设
    • SEO优化
    • 技术日志
  • 联系我们
    • 关于我们
首页 > 行业动态 > 技术日志 > Redis集合类型的常用命令!

Redis集合类型的常用命令!

2019-04-02

  集合类型介绍

集合类型也是体现redis一个比较高价值的一个类型了。因为Redis的集合类型,所以我们可以很容易的在Redis中执行差集运算、交集运算、并集运算。

首先我们先介绍一下集合类型和列表类型的区别,其实学过面向对象的语言的同学应该都能猜到这些类型有什么不同。

     ①集合类型和列表类型还是都能存储2^32-1个字符串

     ②集合类型是无序的,列表类型是有序的

     ③集合类型是唯一的,列表类型的值是不唯一的

下面我们一起来看一下语法。

1、增加删除元素命令

1

2

sadd key member [member ...]

srem key member [member ...]

sadd命令是用来向集合中增加元素的,当然根据前面的学习经验,如果集合不存在,肯定是会自动创建的。但是这里有点需要注意的是,如果元素已存在,那么他会忽略而不会覆盖。返回值是成功加入元素的数量(忽略的元素不算)。

srem命令也是一样,删除元素,如果元素存在才会删除成功,返回值是成功删除的元素的个数。

2、获得集合中的所有元素

1

smembers key

3、判断元素是否在集合中

1

sismember key member

这个判断操作的时间复杂度是O(1),无论集合中的元素有多少,这个命令始终都很很快的返回结果。存在返回1,不存在或没有这个键的时候都返回0 。

4、集合间运算

1

2

3

sdiff key [key ...]

sinter key [key ...]

sunion key [key ...]

这三个命令才能使Redis大显身手!

我们先准备点测试数据。

1

2

3

4

5

6

127.0.0.1:6379> sadd setA 1 2 3

(integer) 3

127.0.0.1:6379> sadd setB 2 3 4

(integer) 3

127.0.0.1:6379> sadd setC 3 4 5

(integer) 3

1

2

3

4

5

127.0.0.1:6379> smembers setA

1) "1"

2) "2"

3) "3"

127.0.0.1:6379>

(1)下面我们来介绍sdiff命令,这个命令实际上是差集运算。

集合A与集合B的差值运算表示为A-B,代表所有属于A且不属于B的元素构成的集合。这个命令同时支持传入多个键,意思是A与B先做差集运算,然后结果再与C做差集运算。

1

2

3

4

5

6

127.0.0.1:6379> sdiff setA setB

1) "1"

127.0.0.1:6379> sdiff setB setC

1) "2"

127.0.0.1:6379> sdiff setA setB setC

1) "1"

(2)接下来我们介绍sinter命令,这个命令用来对多个集合执行交集运算。集合A与集合B的交集表示为A∩B,即所有属于A且属于B的元素构成的集合。这个命令也同时支持传入多个键,也是一样,一步一步的做交集运算。

1

2

3

4

5

127.0.0.1:6379> sinter setA setB

1) "2"

2) "3"

127.0.0.1:6379> sinter setA setB setC

1) "3"

(3)最后我们介绍并集运算命令sunion。集合A与集合B的并集意思是既属于A也属于B的集合。同样支持多个键传入。

1

2

3

4

5

6

7

8

9

10

11

127.0.0.1:6379> sunion setA setB

1) "1"

2) "2"

3) "3"

4) "4"

127.0.0.1:6379> sunion setA setB setC

1) "1"

2) "2"

3) "3"

4) "4"

5) "5"

5、获得集合中元素的个数

1

2

3

4

5

scard key

127.0.0.1:6379> scard setA

(integer) 3

127.0.0.1:6379> scard setB

(integer) 3

这条命令用来获取集合中元素的个数。同样集合不存在返回0 。

6、进行集合运算并将结果存储

1

2

3

sdiffstore destination key [key ...]

sinterstore destination key [key ...]

sunionstore destination key [key ...]

这里在所有的集合命令之后加了个store,很清楚就是存储的意思了。destination就是目的地,也就是我们要存储的键名。

例:

1

2

3

4

5

6

7

8

127.0.0.1:6379> sunionstore setAll setA setB setC

(integer) 5

127.0.0.1:6379> smembers setAll

1) "1"

2) "2"

3) "3"

4) "4"

5) "5"

7、随机获得集合中的元素

1

srandmember key [count]

 

这个命令用来随机从集合中获取一个元素,count参数用来一词获取多个元素,根据count的正负有不同的意义。

     (1)当count为正数时,获取count个不重复的元素,如果count大于所有值的个数,则返回全部元素。

     (2)负值时,获得|count|个元素,但有可能相同。

其实这个随机并不是非常随机,因为实际上redis的集合用的是散列的存储结构,有兴趣的读者可以自己深入研究一下。

1

2

3

4

5

6

7

8

9

10

11

12

127.0.0.1:6379> srandmember setA 1

1) "1"

127.0.0.1:6379> srandmember setA 2

1) "3"

2) "2"

127.0.0.1:6379> SRANDMEMBER setA 5

1) "1"

2) "2"

3) "3"

127.0.0.1:6379> SRANDMEMBER setA -2

1) "3"

2) "3"

8、从集合中弹出一个元素

1

spop key

之前我们也看过lpop与rpop,那是从列表中弹出,但是集合是无序的,所以spop是随机弹出。 (弹出的元素被删除,不在原来的集合中)

1

2

3

4

5

127.0.0.1:6379> spop setA 1

1) "2"

127.0.0.1:6379> smembers setA

1) "1"

2) "3"

下面我们来举例一个集合的具体应用。

在我们文章存储的时候有个标签tag,这个我们在关系数据库的时候都需要使用中间表关联。但是在Redis中,我们可以很方便的处理。

对每篇文章,我们使用一个post:文章ID:tags的键,类型为集合,存储一篇文章所属的tags,这样本身关系型数据库我们需要关联文章表、标签表、中间关系表三个表的复杂操作,在Redis中就很好处理了。

有时候我们还需要获取指定标签的所有文章,我们还需要增加一类的键,即tag:标签名称:posts的集合类型键,存储每个标签的文章ID集合,这样我们每次想要获取所有属于某个标签的文章列表的时候也不用像关系数据库那样关联那么多表,而是直接通过键就可以直接获得了。

而在我们想要获取比如同时属于java和redis标签的文章时,我们只需要对tag:java:posts和tag:redis:posts做交集运算就OK了,是不是很方便呢?

Tag:
网站制作公众号

宿迁腾云网络网站建设公司 | 网站开发 | 网站制作 | 网站优化

咨询电话:13160355545

上一篇

返回栏目

下一篇

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

热推

  • 单片机开发技术编程软件
  • 开源php erp管理系统一下Java部分框架和开源项目总结(一)Java开源php erp系统
  • 怎么运行php代码才能做成一个能赚钱的网站?
  • php 分享到微信代码PHP初级开发工程师1.比较全面的学习流程,你知道吗? 分享到微信朋友圈 代码
  • php上传图片代码编辑 图片上传的整个流程我们都准备好了(图)php图片上传代码
  • 几个主流国外PHP框架选型参考
  • 说起编程思维的包装和训练,你知道吗?(图)
  • php登录界面代码一个默认的文件名暴露(一):管理事件和表格分区php界面代码
  • 2018什么是真正的全栈工程师,他们需要掌握更多的编程语言吗?
  • 后盾php视频教程第一部之php博客项目实战开发京东健康2020总收入同比增长78.8%在线问诊也暴露出php框架开发 实战视频教程

相关

标签

seo(1182) 市场营销(661) 网站制作(573) 网站建设(564) 搜索引擎(553) 网站(482) PHP(361) 编程语言(345) 建站(294) 关键词排名优化(267) 网站建设公司(245) 优化(216) seo排名(207) 域名(190) 软件(171) 网站优化(148) 搜索引擎优化(146) 外链(141) 科技(136) 网站关键词(124) 网站排名优化(123) 域名服务器(120) 网站排名(107) 时政(103) 排名优化(95) 搜索引擎收录(93) 网站设计(92) 电子商务(88) 引擎(86) 移动互联网(85) 开发框架(79) 开发(75) 网站服务器(74) 框架(68) 前端开发(68) 网站分析(66) 网站建设方案(65) 关键(64) 流量(63) 源码(62) 百度优化(62) 网站权重(61) 开放源代码(59) seo培训(53) 网页设计(51) 百度(51) php框架(50) 网站建设知识(50) 大数据(50) 谷歌(49)
宿迁腾云网络网站建设公司
网站建设
  • 私人定制
  • 标准模板建站
  • 经济模板建站
精品模板

宿迁腾云网络网站建设公司

联系电话:13160355545

公司地址:江苏省宿迁市丽景湾华庭北门都市花园公寓9楼907

联系邮箱:admin@tyweb.net

全国分站
  • 北京
  • 广东
  • 东莞 广州 中山 深圳 惠州 江门 珠海 汕头 佛山 湛江 河源 肇庆 潮州 清远 韶关 揭阳 阳江 云浮 茂名 梅州 汕尾
  • 山东
  • 济南 青岛 临沂 济宁 菏泽 烟台 泰安 淄博 潍坊 日照 威海 滨州 东营 聊城 德州 莱芜 枣庄
  • 江苏
  • 苏州 徐州 盐城 无锡 南京 南通 连云港 常州 扬州 镇江 淮安 泰州 宿迁
  • 河南
  • 郑州 南阳 新乡 安阳 洛阳 信阳 平顶山 周口 商丘 开封 焦作 驻马店 濮阳 三门峡 漯河 许昌 鹤壁 济源
  • 上海
  • 河北
  • 石家庄 唐山 保定 邯郸 邢台 沧州 秦皇岛 张家口 衡水 廊坊 承德
  • 浙江
  • 温州 宁波 杭州 台州 嘉兴 金华 湖州 绍兴 舟山 丽水 衢州
  • 陕西
  • 西安 咸阳 宝鸡 汉中 渭南 安康 榆林 商洛 延安 铜川
  • 湖南
  • 长沙 邵阳 常德 衡阳 株洲 湘潭 永州 岳阳 怀化 郴州 娄底 益阳 张家界 湘西
  • 重庆
  • 福建
  • 漳州 泉州 厦门 福州 莆田 宁德 三明 南平 龙岩
  • 天津
  • 云南
  • 昆明 红河 大理 文山 德宏 曲靖 昭通 楚雄 保山 玉溪 丽江 临沧 思茅 西双版纳 怒江 迪庆
  • 四川
  • 成都 绵阳 广元 达州 南充 德阳 广安 阿坝 巴中 遂宁 内江 凉山 攀枝花 乐山 自贡 泸州 雅安 宜宾 资阳 眉山 甘孜
  • 广西
  • 贵港 玉林 北海 南宁 柳州 桂林 梧州 钦州 来宾 河池 百色 贺州 崇左 防城港
  • 安徽
  • 芜湖 合肥 六安 宿州 阜阳 安庆 马鞍山 蚌埠 淮北 淮南 宣城 黄山 铜陵 亳州 池州 巢湖 滁州
  • 海南
  • 三亚 海口 琼海 文昌 东方
  • 江西
  • 南昌 赣州 上饶 吉安 九江 新余 抚州 宜春 景德镇 萍乡 鹰潭
  • 湖北
  • 武汉 宜昌 襄樊 荆州 恩施 孝感 黄冈 十堰 咸宁 黄石 仙桃 随州 天门 荆门 潜江 鄂州 神农架
  • 山西
  • 太原 大同 运城 长治 晋城 忻州 临汾 吕梁 晋中 阳泉 朔州
  • 辽宁
  • 大连 沈阳 丹东 辽阳 葫芦岛 锦州 朝阳 营口 鞍山 抚顺 阜新 本溪 盘锦 铁岭
  • 黑龙江
  • 齐齐哈尔 哈尔滨 大庆 佳木斯 双鸭山 牡丹江 鸡西 黑河 绥化 鹤岗 伊春 大兴安岭 七台河
  • 内蒙古
  • 赤峰 包头 通辽 呼和浩特 乌海 鄂尔多斯 呼伦贝尔
  • 贵州
  • 贵阳 黔东 黔南 遵义 黔西 毕节 铜仁 安顺 六盘水
  • 甘肃
  • 兰州 天水 庆阳 武威 酒泉 张掖 陇南 白银 定西 平凉 嘉峪关 临夏 金昌 甘南
  • 青海
  • 西宁 海西 海东 海北 果洛 玉树 黄南
  • 新疆
  • 乌鲁木齐 伊犁 昌吉 石河子 哈密
  • 西藏
  • 拉萨 山南 林芝 日喀则
  • 吉林
  • 长春 白山 白城 延边 松原 辽源 通化 四平
  • 宁夏
  • 银川 吴忠 中卫 石嘴山 固原
SiteMap
网站地图
TAG标签
Copyright © 2017-2025 TYWEB.NET 宿迁腾云网络科技有限公司 ALL RIGHTS RESERVED.   苏ICP备17033535号-1

热门搜索

百度 下载 2025 2024 2026 货源 货货源 虚拟 禅道 报名 金蝶KIS旗舰版
  • 客服

    在线客服

  • 电话

    13160355545

  • 微信

精品模板
建站费用
成功案例
联系我们