Redis——set类型详解

概要

Set(集合),将一些有关联的数据放到一起,集合中的元素是无序的,并且集合中的元素是不能重复的

之前介绍的list就是有序的,对于列表来说[1, 2, 3] 和 [2, 1, 3]是两个不同的列表,而对于集合来说,[1, 2, 3] 和 [2, 1, 3]是同一个集合

并且,set类型和list类型类似,每个元素都是string类型的

sadd

向集合中添加一个或多个元素,返回成功添加了多少个元素,时间复杂度O(1)
在这里插入图片描述
演示:
在这里插入图片描述

smembers

获取set中全部的元素
Redis——set类型详解_第1张图片

sismember

判断当前元素是否在集合中,如果在返回1,如果不在返回0
在这里插入图片描述
演示:
Redis——set类型详解_第2张图片

scard

获取集合中元素的个数,如果key不存在则返回0
Redis——set类型详解_第3张图片

spop

随机删除集合中count个元素(不写count就是随机删除一个元素),返回删除的元素

在这里插入图片描述
演示:
Redis——set类型详解_第4张图片
官方文档中展示了,spop实现时采用了生成随机数的方式来随机删除

srandmember

和spop类似,随机获取元素,但是不删除
Redis——set类型详解_第5张图片

smove

把一个元素从source集合中取出来,放到destination集合中
在这里插入图片描述
演示:
Redis——set类型详解_第6张图片
如果source中移动的元素在destination中已经存在,source中的元素确实会删除,但是destination中并不会再次插入元素
Redis——set类型详解_第7张图片
如果source中不存在要移动的元素,则返回0

在这里插入图片描述

srem

删除集合中一个或多个元素,返回值是成功删除的元素个数

在这里插入图片描述
演示:
Redis——set类型详解_第8张图片

集合间操作

sinter

获取若干个key的交集,时间复杂度O(N*M)
在这里插入图片描述
演示:
Redis——set类型详解_第9张图片

sinterstore

获取若干个key的交集,将结果放到destination中,返回值是交集的元素个数

在这里插入图片描述
演示:
Redis——set类型详解_第10张图片

sunion

返回若干个集合并集的结果,时间复杂度O(N),N是总集合个数
在这里插入图片描述

演示:
Redis——set类型详解_第11张图片

sunionstore

将若干个集合并集的结果存储到destination中,返回并集的元素个数
在这里插入图片描述
演示:
Redis——set类型详解_第12张图片

sdiff

获得若干个集合的差集,时间复杂度O(N),N是总集合个数
在这里插入图片描述
演示:
在这里插入图片描述

sdiffstore

将若干个集合的差集存储到destination中,返回值是差集中元素的个数
在这里插入图片描述
演示:
Redis——set类型详解_第13张图片

内部编码

intset

整数集合,当元素全部是整数时,并且数量不多,使用整数集合存储元素
在这里插入图片描述

hashtable

使用哈希表存储元素

在这里插入图片描述

应用场景

  1. 保存用户画像(方便根据用户画像计算用户之间的公共标签)
  2. 计算用户之间的共同好友(好友推荐)
  3. 统计uv(去重)

pv(page view):用户每次访问服务器产生一个pv
uv(user view):每个用户访问服务器产生一个uv,同一个用户访问多次只会产生一个uv,用于统计用户个数

你可能感兴趣的:(数据库,redis,redis,数据库,缓存)