开发者学堂课程【Redis 入门到精通(基础篇):数据类型-set 类型介绍与基本操作】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/764/detail/13384
数据类型-set 类型介绍与基本操作
内容介绍
一、set 类型
二、Set 类型数据的基本操作
一、set 类型
●新的存储需求:存储大量的数据,在查询方面提供更高的效率
●需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询
●set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的
前面已经完成了三个类型的学习,接下来进行set类型的学习,存储大量的数据,在查询方面提供更高的效率,为什么这么说呢,前面的list难道不能满足这个需求吗?
List可以存储大量数据,还有存储顺序,能用对应的索引访问,看上去非常好,但是内部存储结果很鸡肋,是一个链表的结构,链表的存储效率是很低的,那么如果存储大量数据,读取速度满,就有点违背存储初衷,于是就需要全新的模型。
全新的模型要求能够存储大量数据,内部存储机制便于查询,高效查询,这时就想到了前面的一个存储结构,hash,hash的存储结构是左边一列表头,是field,右边一列是真实的数据,
但是这里面有一个坑,我们用的是右边的数据,而左边是名字,如果说就是我的数据,也不是不可以,所以进行一个变形,右边全部放空,左边的名字就是我的数据,这样首先就能存储大量数据,内部结构是hash表,hash表的存储效率是非常高的,于是就在左边变一下形,左边存value,这就是我们要的模型,就是set,
也就是说,set 存储空间不是一个全新的模型,而是通过hash变形来的,与hash的结构完全相同,仅使用右边键的部分,也就是field部分,这样就得到了一个全新的结构,这个结构数据是不允许重复的,跟之前一样,如果重复的话会覆盖,左边key 对右边这一堆,右边用原来hash的名称这一部分做了存储空间,这就是新的存储结构。
二、Set 类型数据的基本操作
●添加数据
sadd key member1 [member2]
●获取全部数据
smembers key
●删除数据
Srem key member1 [member2]
●获取集合数据总量
Scard key
●判断集合中是否包含指定数据
sismember key member
由于set不想list那样分左右,它里面hash结构,也没有索引,所以操作相对简单,直接操作,sadd users zs,然后回车,添加成功,然后继续添加,sadd users ls,sadd users ww,然后smembers users,查看数据,接下来删除数据,srem users ww,然后在重新查看,smembers users,查看数据。
通过前后查看比对,前后查询并不是我们添加的数据顺序,删除后顺序没有改变,典型的hash结构。
继续操作,scard users,得到数据的数量,然后查询指定数据,sismember users zs,查询结束,存在数据,sismember users ww,返回integer 0,查询失败。