redis快速入门4 五种数据类型之Set类型 你的博客点赞功能该如何实现
前期文章:
redis快速入门1 五种数据类型之String篇 你的个人网站访问统计怎么做
redis快速入门2 五种数据类型之Lists篇 好好排队,别挤了,会轮到你的!!
redis快速入门3 五种数据类型hash篇 你别铺张浪费了!要精打细算呀!
前记
最近因为要部署一套供演示的集群环境,断更了一段时间。重新续上。
在redis官网上找到了个在线熟悉redis指令的网站,给个链接点击
所有文章里提到的指令,均可以直接在上面练手了。挺方便的
Set数据类型
今天讲的set,意为集合,它和另一种数据类型sorted set 的区别,在于它是无序的。他可以允许用户将多个不同的元素,存储到set集合的健值中,这些数据既可以是二进制的,也可以是文本数据。、
另一方面,他也有点类似我们之前说的Lists数据类型,可以一个健存储多个元素,但区别在于: set集合的元素是唯一的,不重复的,而lists列表的元素是允许重复的。
所以,当我们用redis进行数据存储的时候,如果你再纠结用set还是lists来保存数据的时候,考虑下你所需要保存的数据,允不允许出现重复的情况。
如果允许,比如,记录一天的作息安排,那么一天的时间里,可以你上午会有个会,中午午休,下午有个会议,这种可以用lists来保存,如[“开会”,“午休”,“开会”]等。但如果我们要记录一篇文章,有哪些小伙伴点了赞,这个时候,一个用户是只能点一个赞的,拿就要用到集合了,它会忽略掉已经存在的元素。
set在数据存储上有两种编码方式;intset编码和hashtable编码方式,我们需记住下面这个图话的结构。
如果我们用set存储的是数字,那么数字存储的结构是一个从小到大的整数集合
如果存储的是字符串,那么存储的结构是一个字典对象,字典的键值为我们所要保存的值,字典的值为null。
这里有个注意的点,我们说set是个无序的集合,但前面讲到,如果保存的值是个数字,它会从小到大排列,这无序体现在哪里呢? 其实这里的无序指的是数据存储的顺序和你录入数据的顺序无关,而不是指数值大小。
常用方法
接下来,我们来敲下指令,熟悉下set的指令
SADD
SADD 将元素添加到集合
# 添加一个元素
127.0.0.1:6379> SADD fruit Apple
(integer) 1
# 添加两个元素
127.0.0.1:6379> SADD fruit Banana Orange
(integer) 2
这里我们可以看到,SADD 指令成功后,会返回当前设置成功的元素数目
SADD 会忽略已存在的元素,比如我们重新设置App