Redis研究(六)—集合类型

一、介绍

一个集合类型(set)键可以存储至多2^32-1个字符串。

集合类型在Redis内部是使用值为空的散列表(hash table)实现的,所以操作的复杂度为O(1)。多个集合类型键之间还可以进行并集、交集和差集运算。

二、命令

1.增加/删除元素

sadd key member
srem key member

sadd用来向集合中增加一个或者多个元素,如果键不存在则会自动创建。一个集合中不能有相同的元素,所以如果要加入的元素已经存在于集合中就会忽略这个元素。本命令的返回值是成功加入的元素数量。

第二条sadd命令返回2,因为a已经存在,实际上只加入两个元素。

srem用来从集合中删除一个或者多个元素,并返回删除成功的个数,

由于d在集合中不存在,所以只删除了一个元素,返回值为1.

2.获得集合中的所有元素

smembers key

返回集合所有元素

3.判断元素是否在集合中

sismember key member

时间复杂度O(1),无论有多少个元素。

4.集合之间运算

sdiff key
sinter key
sunion key

(1)sdiff差集运算,A-B,属于A但不属于B

sdiff支持同时传入多个键

顺序先计算setA-setB,再计算结果与setC的差集。

(2)sinter交集运算

sinter同样支持同时传入多个键。

(3)sunion并集运算。

sunion同样支持同时传入多个键。

三、命令拾遗

1.获得集合中元素个数

scard key

2.进行集合运算并将结果存储

sdiffstore destination key
sinterstore destination key
sunionstore destination key

和sdiff功能一样,唯一区别前者不会直接返回运算结果,而是将结果存储在destination键中。

3.随机获得集合中的元素

srandmember key [count]

count参数一次随机获得多个元素。

(1)count正数,获得count个不重复的元素,当大于集合元素个数,返回集合全部元素

(2)count负数,绝对值个元素,可能相同。

4.从集合中弹出一个元素

spop key

从集合中随机选择一个元素弹出。

时间: 2024-07-28 17:28:16

Redis研究(六)—集合类型的相关文章

StackExchange.Redis 之 Set集合 类型示例

话不多说直接上代码: // set添加单个元素 stopwatch.Start(); var isok = RedisCacheHelper.Instance.SetAdd("setkey", "10"); stopwatch.Stop(); Console.WriteLine("set添加单个元素消耗时间:" + stopwatch.ElapsedMilliseconds.ToString()); // set添加多个元素 sting类型集合

Redis中有序集合的常用命令有哪些?

本文和大家分享的主要是redis 中有序集合类型的常用命令,一起来看看吧,希望对大家 学习redis有所帮助. 一.有序集合类型 有序集合类型,大家从名字上应该就可以知道,实际上就是在集合类型上加了个有序而已.Redis 中的有序集合类型,实际上是在集合类型上,为每个元素都关联一个分数,有序实际上说的是分数有序,我们根据分数的范围获取集合及其他操作.集合的元素依然是不能够相同的,但是分数可以相同. 下面列举有序集合和类型和列表类型的相似处: ① 两者都是有序的(废话!) ② 两者都可以获得某一范

15天玩转redis —— 第六篇 有序集合类型

今天我们说一下Redis中最后一个数据类型 “有序集合类型”,回首之前学过的几个数据结构,不知道你会不会由衷感叹,开源的世界真好,写这 些代码的好心人真的要一生平安哈,不管我们想没想的到的东西,在这个世界上都已经存在着,曾几何时,我们想把所有数据按照数据结构模式组成 后灌输到内存中,然而为了达到内存共享的方式,不得不将这块内存包装成wcf单独部署,同时还要考虑怎么序列化,何时序列互的问题,烦心事太多 太多...后来才知道有redis这么个吊毛玩意,能把高级的,低级的数据结构单独包装到一个共享内存

Redis研究(八)—有序集合类型 1

一.介绍 sorted set为集合中的每个元素都关联了一个分数,所以可以获得分数最高或者最低的前N个元素,获得指定分数范围内的元素等与分数有关的操作.虽然集合中每个元素都是不同的,但是他们的分数却可以相同. 有序集合类型与列表类型有些相似 (1)二者都是有序的 (2)二者都可以获得某一个范围的元素. 但是二者有很大的区别 (1)列表通过链表实现,获取两端数据速度快,访问中间数据速度慢. (2)有序集合类型使用散列表和跳跃表实现,获取中间数据也很快(时间复杂度O(log(N))). (3)列表不

Redis研究(九)—有序集合类型 2

上一篇已经讲了一部分有序集合类型的命令了 http://blog.csdn.net/wtyvhreal/article/details/42804571 三.命令拾遗 1.获得集合中元素的数量 zcard key 2.获得指定分数范围内的元素个数 <span style="font-size:14px;">zcount key min max</span> 3.删除一个或者多个元素 <span style="font-size:14px;&quo

Redis常用命令入门4:集合类型

集合类型 之前我们已经介绍过了最基本的字符串类型.散列类型.列表类型,下面我们一起学习一下集合类型. 集合类型也是体现redis一个比较高价值的一个类型了.因为Redis的集合类型,所以我们可以很容易的在Redis中执行差集运算.交集运算.并集运算. 首先我们先介绍一下集合类型和列表类型的区别,其实学过面向对象的语言的同学应该都能猜到这些类型有什么不同. ①集合类型和列表类型还是都能存储2^32-1个字符串 ②集合类型是无序的,列表类型是有序的 ③集合类型是唯一的,列表类型的值是不唯一的 下面我

使用 redis (sort set排序集合类型操作)

sort set排序集合类型 释义: sort set 是 string 类型的集合 sort set 的每个元素 都会关联一个 权 通过 权值 可以有序的获取集合中的元素 应用场合: 获取热门帖子(回复量)信息: select * from message order by backnum desc limit 5; // 利用 sort set 实现最热门的前 5 贴信息 帖子id            回复量(万条) 11                102        12     

使用 redis ( set集合类型操作)

set 集合类型 释义:            redis 的 set 是 string 类型的无序集合 set 元素最大可以包含(2的32次方-1)个元素 关于 set 集合类型除了基本的添加删除操作 其他有用的操作还包含集合的 并集(union),交集(intersection),差集(difference). 通过这些操作实现SNS中的 好友推荐功能 注意: 每个集合中的各个元素不能重复 应用场合: QQ好友的推荐 set 类型操作: sadd key member 添加一个 string

Redis 四:存储类型之有序集合

有序集合似乎更大的操作是由于加了一个叫做“分子”的东西 事实上就好像普通的数据,只是为这个数据加了一个纯数字的标识, 通过操作这些标识来得到我们想要的数据! 分子可以是整形,也可以是双精度浮点型: ==================================================== 1.zadd num 100 a 80 b 70 c 添加一个叫num的有序集合,a元素为100分,b元素为80分.... 2.zscore num a 获取num集合中元素名为a的分子 ====