php redis set 类型,Redis入门系列(五):Redis的Set类型

概念

可以想象一下高中学过的集合,一样。

SET与LIST的比较

SET:元素无序,元素不可重复。

LIST:元素有序,元素可重复。

SET好用的特性

SET可以进行差集、交集、并集的运算。

命令

添加、删除元素

SADD letters a b //向集合letters中添加元素a、b

SREM letters a //移除集合letters中的元素a

获取集合中的所有元素

SMEMBERS letters

判断一个元素是否属于集合

//判断一个元素是否在集合中,时间复杂度是O(1),所以速度非常快。

SISMEMBER letters a //属于返回1 不属于返回0

获取集合中元素的个数

SCARD letters

随机获取集合中的一个元素

SRANDMEMBER letters

随机POP集合中的一个元素

SPOP letters

集合间运算

差集运算

概念

A与B的差集:表示A中有但是B中没有的元素的集合

B与A的差集:表示B中有但是A中没有的元素的集合

SDIFF A B //表示A与B的差集

SDIFF支持传入2个以上参数,如下图3个集合进行DIFF运算。

首先 setA 与 setB 进行DIFF ,得到集合 {1 2}

然后,集合{1 2}再和setC进行DIFF,得到集合{2}

7da59b35743ab92171cc3df81657f143.png

交集运算

SINTER setA setB (得出集合元素:既属于setA又属于setB)

并集运算

SUNION setA setB (得出集合元素,属于setA或者属于setB)

问题思考·如何存储文章标签最优雅

描述

如果要存储文章标签的话,选择什么类型的数据结构最合适?

PS:一个文章标签有多个。比如一篇文章标签是:“PHP、技术随笔、知识分享”。比如我现在想替换“PHP”标签为“PHP性能优化”。

分析

String类型

文章ID:文章标签。

这个例子中可以存储(假设文章ID为5):

ID:5 : PHP、技术随笔、知识分享。

我如果想替换PHP标签为PHP性能优化。

只能是重新SET:

SET ID:5 PHP、技术随笔、知识分享

替换动作:

SET ID:5 PHP性能优化、技术随笔、知识分享

这个很不优雅,PASS

HASH类型

HASH类型存储了对象中属性与属性值的映射关系。

假设HSET一个文章ID,属性包括 文章title、content、tags

HMSET ID:5 title 文章标题 content 文章内容 tags PHP、技术随笔、知识分享

我要改变文章的tags:

HSET tags PHP性能优化、技术随笔、知识分享

同样,也是重写他的tags,不是替换掉某一个tag。(和String没啥区别)

不优雅,PASS。

LIST类型

LIST类型可以存储文章标签。

注意:LIST有2个特性:有序、元素可重复。

但是,存储文章标签,内容无序,存储内容是不可重复的。

可以,但是不优雅,PASS。

SET类型

faea77eb4c69c45471ed7cf10b2af6cc.png

使用SET类型,就很容易的对某个标签进行:

增加、删除、更改。

优雅~

更多精彩,请关注公众号“聊聊代码”,让我们一起聊聊“左手代码右手诗”的事儿。

bVK3YX

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值