`
足至迹留
  • 浏览: 494767 次
  • 性别: Icon_minigender_1
  • 来自: OnePiece
社区版块
存档分类
最新评论

<redis-6> 3.4 redis数据类型之集合(set)

 
阅读更多
3.5 集合类型
在集合中的每个元素都是不同的,且没有顺序。一个集合类型(set)键可以存储至多2^32-1个(相信这个数字对大家来说已经很熟悉了)字符串。集合类型和列表类型有相似之处,但很容易将它们区分开来,如表3-4所示。


集合类型的常用操作是向集合中加入或删除元素、判断某个元素是否存在等,由于集合类型在Redis内部是使用值为空的散列表(hash table)实现的,所以这些操作的时间复杂度都是0(1)。最方便的是多个集合类型键之间还可以进行并集、交集和差集运算,稍后就会看到灵活运用这一特性带来的便利。

3.5.2 命令
1.增加/删除元素
SADD key member [member …]
SREM key member [member …]

SADD命令用来向集合中增加一个或多个元素,如果键不存在则会自动创建。因为在一个集合中不能有相同的元素,所以如果要加入的元素已经存在于集合中就会忽略这个元素。本命令的返回值是成功加入的元素数量(忽略的元素不计算在内)。例如:
redis>SADD letters a
(integer) 1
redis> SADD letters a b c
(integer) 2


SREM命令用来从集合中删除一个或多个元素,并返回删除成功的个数,例如:
redis>SREM letters c d
(integer) 1


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

SMEMBERS命令会返回集合中的所有元素,例如:
redis>SMEMBERS letters
1) "b"
2) "a"


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

判断一个元素是否在集合中是一个时间复杂度为O(1)的操作,无论集合中有多少个元素,SISMEMBER命令始终可以极快地返回结果。当值存在时SISMEMBER命令返回1,当值不存在或键不存在时返回0,例如:
redis>SISMEMBER letters a
(integer) 1
redis>SISMEMBER letters d
(integer) 0


4.集合间运算
SDIFF key [key …]
SINTER key [key …]
SUNION key [key …]

接下来要介绍的3个命令都是用来进行多个集合间运算的。
(1) SDIFF命令用来对多个集合执行差集运算。集合A与集合B的差集表示为A-B,代表所有属于A且不属于B的元素构成的集合。
(2) SINTER命令用来对多个集合执行交集运算。集合A与集合B的交集表示为A∩B,代表所有属于A且属于B的元素构成的集合。
(3) SUNION命令用来对多个集合执行并集运算。集合A与集合B的并集表示为AUB,代表所有属于A或属于B的元素构成的集合。

5.获得集合中元素个数
SCARD key

SCARD命令用来获得集合中的元素个数,例如:
redis>SMEMBERS letters
1) "b"
2) "a"
redis>SCARD letters
(integer) 2


6.进行集合运算并将结果存储
SDIFFSTORE destination key [key …]
SINTERSTORE destination key [key …]
SUNIONSTORE destination key [key …]

SDIFFSTORE命令和SDIFF命令功能一样,唯一的区别就是前者不会直接返回运算结果,而是将结果存储在destination键中。SDIFFSTORE命令常用于需要进行多步集合运算的场景中,如需要先计算差集再将结果和其他键计算交集。
SINTERSTORE和SUNIONSTORE命令与之类似,不再赘述。

7.随机获得集合中的元素
SRANDMEMBER key [count]

SRANDMEMBER命令用来随机从集合中获取一个元素,如:
redis>SRANDMEMBER letters
"a"
redis>SRANDMEMBER letters
"b"
redis>SRANDMEMBER letters
"a"

还可以传递count参数来一次随机获得多个元素,根据count的正负不同,具体表现也不同。
(1)当count为正数时,SRANDMEMBER会随机从集合里获得count个不重复的元素。如果count的值大于集合中的元素个数,则SRANDMEMBER会返回集合中的全部元素。
(2)当count为负数时,SRANDMEMBER会随机从集合里获得|count|个的元素,这些元素有可能相同

8.从集合中弹出一个元素
SPOP key

3.4节中我们学习过LPOP命令,作用是从列表左边弹出一个元素(即返回元素的值并删除它)。SPOP命令的作用与之类似,但由于集合类型的元素是无序的,所以SPOP命令会从集合中随机选择一个元素弹出。例如:
redis>SPOP letters
"b"
redis>SMEMBERS letters
1) "a"
2) "c"
3) "d"

  • 大小: 74.9 KB
0
2
分享到:
评论

相关推荐

    phpredis redis管理工具

    以上就是 `phpredis` 在管理 Redis 数据库时的基本知识点,它提供了丰富的接口,涵盖了 Redis 的各种数据类型和操作,使得在 PHP 应用中灵活使用 Redis 成为可能。通过 `phpredis-master` 压缩包,你可以获取到最新...

    php5.5.30-redis扩展

    $redis-&gt;set('key', 'value'); ``` - **GET**:获取键对应的值 ```php $value = $redis-&gt;get('key'); ``` #### 3.2 集合操作 - **SADD**:向集合中添加元素 ```php $redis-&gt;sadd('mySet', 'element1', '...

    08次课 Redis-04 在SpringBoot中使用.doc

    StringRedisTemplate 是 SpringBoot 提供的一个 Redis 模板,用于操作 Redis 的字符串类型数据。下面是一个基本的使用示例: ```java @Autowired private StringRedisTemplate stringRedisTemplate; ...

    安装redis(主备)

    4. **丰富的数据类型**:Redis支持多种数据类型,包括字符串(string)、列表(list)、哈希(hash)、集合(set)、有序集合(sorted set)等。 5. **多功能实用工具**:Redis可以用于多种应用场景,如缓存、消息队列、计数器...

    技术文档笔记Redis

    Redis支持五种基本数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Sorted Set(有序集合)。 ##### 3.5 Redis常用数据操作命令 - **String类型**:`SET key value`、`GET key` - **Hash...

    Windows安装Redis及使用教程

    通过本文档的学习,我们可以了解到在Windows环境下如何安装和配置Redis,以及如何使用Redis提供的不同数据类型和开发工具。Redis作为一款高性能的键值存储系统,在处理小而热的数据时表现尤其出色。此外,通过使用...

    Linux下的redis安装

    可以使用 Xftp 6 等工具将 Redis 压缩包上传到服务器。 2.2 解压 Redis 压缩包 使用以下命令解压 Redis 压缩包: tar zxf redis-3.0.0.tar.gz 2.3 进入到 Redis 目录下 进入到解压文件的目录下,例如 redis-...

    spring+springmvc+Interceptor+jwt+redis实现sso单点登录

    return ResponseEntity.status(LoginResponseCode.LOGIN_FAIL.getCode()).body(new ApiResponse&lt;&gt;(LoginResponseCode.LOGIN_FAIL, null)); } } } ``` ##### 3.9 测试SSO单点登录 最后,通过发送HTTP请求来测试...

    若依前后端分离项目部署文档(完整版)

    &lt;packaging&gt;war&lt;/packaging&gt; ``` **1.2 打包并部署** 打包完成后,将生成的WAR文件复制到Windows服务器上的Tomcat的`webapps`目录下,并重命名为`prod-api`。 ##### 部署前端代码 **2.1 打包前端项目** 与Linux...

    Redis安装管理2016

    - `slaveof &lt;masterip&gt; &lt;masterport&gt;`:指定主节点IP和端口。 #### 6.2 主从出现的问题 - **数据不一致**:网络延迟可能导致主从同步滞后。 - **故障转移**:手动或使用工具如Sentinel进行故障转移。 ### 七、...

    Redis命令实践教程.docx.docx

    本教程通过详细介绍Redis的基础命令、数据类型操作以及一些进阶功能,旨在帮助初学者快速掌握Redis的使用方法。通过实践这些命令,用户不仅能够理解Redis如何存储和检索数据,还能了解到如何利用其特性来提高应用...

    面试突击班3.4redis知识讲解.zip

    1. 数据结构:Redis支持多种数据类型,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。每种数据类型都有其独特的应用场景。 2. 持久化:Redis提供RDB(快照)和AOF(Append Only File...

    Redis之SortedSet(有序集合)总结

    Redis中的Sorted Set(有序集合)是一个非常重要的数据结构,它结合了Set(集合)的数据特性与Score(分数)的功能,可以实现对集合元素的排序。本文将深入探讨Sorted Set的基本概念、操作命令以及实际应用场景。 ...

    Javs实战之Redis入门精华讲解

    - **定义与用途**:字符串是 Redis 最基础的数据类型之一,它本质上是一个键值对。字符串类型的值可以是任何格式的数据,如纯文本、图片编码数据或JSON文档等。这种简单灵活的数据类型非常适合用来存储普通的数据。 ...

    Java 使用 Redis开发.pdf

    &lt;groupId&gt;redis.clients&lt;/groupId&gt; &lt;artifactId&gt;jedis&lt;/artifactId&gt; &lt;version&gt;3.8.0&lt;/version&gt; &lt;/dependency&gt; ``` 3. **配置 Classpath**:确保项目的 Classpath 中包含了 Jedis 驱动包,这样才能在编译时正确...

    redis技术实践

    - **String(字符串)**: Redis中最基本的数据类型,可用于存储简单的键值对,支持`GET`和`SET`等命令。 - **List(链表)**: 双端链表,可以从两端插入或删除元素,适用于消息队列等场景,常用命令有`LPUSH`和`RPUSH`等...

Global site tag (gtag.js) - Google Analytics