数据类型-set 类型介绍与基本操作| 学习笔记

简介: 快速学习数据类型-set 类型介绍与基本操作

开发者学堂课程【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,

image.png

也就是说,set 存储空间不是一个全新的模型,而是通过hash变形来的,与hash的结构完全相同,仅使用右边键的部分,也就是field部分,这样就得到了一个全新的结构,这个结构数据是不允许重复的,跟之前一样,如果重复的话会覆盖,左边key 对右边这一堆,右边用原来hash的名称这一部分做了存储空间,这就是新的存储结构。

image.png


二、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,查询失败。

相关文章
|
3月前
|
存储 Swift iOS开发
在Swift编程语言中,集合类型`Set`
在Swift编程语言中,集合类型`Set`
22 2
|
3月前
|
Java 程序员
Java集合框架:List、Set、Map类型及泛型详解
Java集合框架:List、Set、Map类型及泛型详解
|
11天前
|
索引 Python
python 格式化、set类型和class类基础知识练习(上)
python 格式化、set类型和class类基础知识练习
33 0
|
1月前
|
存储 C++ 容器
在C++的set的作用类型
在C++的set的作用类型
9 0
|
1月前
|
存储 C++ 容器
set容器一自定义数据类型指定排序规则讲解
set容器一自定义数据类型指定排序规则讲解
18 1
|
1月前
|
存储 C++ 容器
set容器-内置类型指定排序规则讲解
set容器-内置类型指定排序规则讲解
16 0
|
1月前
|
存储 NoSQL Java
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
【Redis】1、学习 Redis 的五大基本数据类型【String、Hash、List、Set、SortedSet】
54 0
|
3月前
|
存储 JavaScript
【ES6系列第二篇】适用JS初学者的Set对象和Map对象学习笔记
【ES6系列第二篇】适用JS初学者的Set对象和Map对象学习笔记
24 0
|
3月前
|
存储 NoSQL Java
面试题:redis除了使用string、set还了解哪些类型
面试题:redis除了使用string、set还了解哪些类型
15 0
|
4月前
|
NoSQL Redis 索引
⑤【Sorted Set】Redis常用数据类型: ZSet [使用手册]
⑤【Sorted Set】Redis常用数据类型: ZSet [使用手册]
96 0