Redis 集合(Set)快速指南 | Navicat

2023-09-14 13:01:16

Redis 支持通过多种数据类型来存储项目集合。其中,包括列表、集合和哈希。上周的博文介绍了列表(List)数据类型并重点介绍了一些用于管理列表(List)的主要命令。在今天的文章中,我们将转向关注集合(Set)数据类型。在 Redis 中,集合(Set)与列表(List)相似,但是,集合(Set)中的元素是无序的,并且每个元素是唯一的。本文将介绍一些用于管理集合(Set)的主要命令,以及在 redis-cli 和 Navicat for Redis 中使用集合(Set)的方法。

创建集合(Set)

在 Redis 中,我们可以使用 SADD 命令创建一个集合(Set),该命令会将指定的成员添加到键(key)中:

SADD key member [member ...]

如前面所提到的,每个元素必须是唯一的。因此,如果指定成员已经存在集合中,其将被忽视。如果键(key)不存在,将创建新集合(Set)并添加唯一的指定成员。如果键(key)已经存在或不是集合类型,则返回一个错误。

此命令用于创建一个“vehicles”集合:

SADD vehicles "Infiniti"         // 1
SADD vehicles "Mazda"            // 1
SADD vehicles "Ford" "Mercedes"    // 2
SADD vehicles "Porsche" "Mercedes" // 1

需要注意的是,SADD 命令返回的是在该语句中被添加的新成员数量,而不是集合的大小。我们从最后一行命令可以看出,只添加了一个元素,因为“Mercedes”值已经存在。

在 Navicat 中创建一个集合(Set)

在 Navicat for Redis 编辑器中,集合(Set)的值用“元素”来表示。点击元素右侧的省略号 […] 按钮,可打开特定编辑器,你可以在此输入单个集合元素:

vehicles_set_in_navicat_editor (69K)

点击“应用”按钮可将新的集合或元素添加进去,Navicat 会自动移除重复的值。

从集合(Set)中移除成员

使用 SREM 命令从集合中移除成员:

SREM key member [member ...]
SREM vehicles "Mazda" "Mercedes" // 2
SREM vehicles "Dodge" // 0

与 SADD 命令相似,SREM 命令也会返回被移除成员的数量。

在 Navicat 编辑器中,我们可以选中任意集合元素并点击位于元素值底部的删除 [-] 按钮来移除它:

delete_button_in_navicat_editor (25K)

验证值是否存在

为了验证一个成员是否属于一个集合,我们可以使用 SISMEMBER 命令:

SISMEMBER key member

如果成员属于集合,该命令返回 1;否则,返回 0:

SISMEMBER vehicles "Infiniti" // 1
SISMEMBER vehicles "Alfa Romeo" // 0

查看集合(Set)

为了展示集合中存在的所有成员,我们可以使用 SMEMBERS 命令:

SMEMBERS key

让我们来看下“vehicles”集合当前所包含的成员:

SMEMBERS vehicles
// returns "Infiniti", "Ford", "Porsche"

合并集合(Set)

我们可以使用 SUNION 命令非常容易地合并集合(Set):

SUNION key [key ...]

SUNION 命令中的每个参数代表一个集合,并要将其合并到更大的集合中。需要注意的是,为了保证元素的唯一性,任何重复的元素都会被移除。

假设我们还有另一个名为“more_vehicles”的集合,其包含“Corvette”和“Alfa Romeo”这两个值。我们可通过以下方式查看“vehicles”和“more_vehicles”这两个集合的所有成员:

SUNION vehicles more_vehicles
// "Infiniti", "Ford", "Porsche", "Corvette", "Alfa Romeo"

总论

本文主要介绍了一些用于管理 Redis 集合( Set )的主要命令,以及在 redis-cli Navicat for Redis 中使用集合(Set)的方法。若想试用 Navicat for Redis ,你可点击 此处 下载它,可享 14 天免费试用完整版功能。

往期回顾 

  1. Navicat 现已正式支持 Redis
  2. Navicat 16 现已支持华为云 GaussDB
  3. Navicat 现已支持 OceanBase 全线数据库
  4. 保姆级教程 | Navicat 人工备份和自动备份
  5. Navicat 用户权限功能
  6. Navicat 数据备份与恢复功能

  7. Navicat 入选中国信通院发布的《中国数据库产业图谱(2023)》

更多推荐

【Linux】分布式版本控制工具git

​​📝个人主页:@Sherry的成长之路🏠学习社区:Sherry的成长之路(个人社区)📖专栏链接:Linux🎯长路漫漫浩浩,万事皆有期待上一篇博客:【Linux】Linux调试器-gdb文章目录一、前言二、版本控制1、何为版本控制2、版本控制工具①集中式版本控制工具②分布式版本控制工具三、代码托管平台四、Lin

【TAPD】实践:TAPD 项目管理配置

目录一、30人以内团队申请免费企业版(1)首次申请试用期3个月(2)进一步申请免费续期二、成员管理三、用户组管理四、项目管理(1)首个项目配置(2)自定义项目模板(3)二次创建项目五、自定义项目模板好处一、30人以内团队申请免费企业版【Tapd】30人以内团队:申请永久免费的Tapd企业版步骤https://gusan

新款 锐科达 SV-2402VP SIP广播音频模块 支持RTP流音频广播

新款锐科达SV-2402VPSIP广播音频模块支持RTP流音频广播SV-2402VP网络音频模块是一款通用的独立SIP音频功能模块,可以轻松地嵌入到OEM产品中。该模块对来自网络的SIP协议及RTP音频流进行编解码。该模块支持多种网络协议和音频编解码协议,可用于VoIP和IP寻呼以及高质量音乐流媒体播放等应用。同时,S

数字孪生在灌区信息中的应用

灌区信息是智慧水利的组成部分,对灌区现代化改造的支撑作用和地位尤为重要,对促进水利可持续发展有重要意义。灌区信息化系统主要对对灌区的水情、雨情、土壤墒情、气象等信息进行监测,对重点区域进行视频监控,同时对泵站、闸门进行远程控制,实现了信息的测量、统计、分析、控制、调度等功能。为灌区管理部门科学决策提供了依据,提升灌区的

TCP并发服务器的多进程实现与多线程实现

TCP并发服务器的多进程实现与多线程实现一、TCP并发服务器的多进程实现代码#include<my_head.h>#defineSERVER_IP"192.168.125.11"//服务器IP#defineSERVER_PORT6666//服务器端口//子进程处理客户端信息函数intdeal_client_messag

小插曲 -- 使用Linux编写 判断程序是否在运行的小程序

编写思路首先,在执行“ps-elf|grepxxx”时,如果xxx存在,通常会有两条结果,一个是xxx对应的PID,一个则是grep对应的PID,但是如果我希望执行命令后,xxx存在就只有xxx对应的PID,不存在就什么都不显示的话,可以将指令修改成:“ps-elf|grepXXX|grep-vgrep”,这样就可以屏

雷电9模拟器抓包

背景本人一开始使用fiddler,然后使用wireshark。然后一直没能成功对雷电9完成JDapp的抓包任务,后来发现一款新产品Reqable,实现了JD请求抓包。思路经过查找资料,我发现核心思路都相差不大,基本使用模拟器wifi代理+证书的形式,把同一局域网下的请求由本地端口代理,再通过工具进行抓包。实战本文以Re

有多条业务线,mysql建多库多表比较好还是一个库多个表比较好呢?

这个问题的答案取决于您的具体需求。以下是一些需要考虑的因素:数据独立性:如果您的业务线之间的数据是独立的,并且不太可能需要进行跨业务线的查询,那么将它们分成多个数据库可能是有意义的。这样可以使每个业务线的数据更加独立,减少潜在的冲突和竞态条件。查询性能:在某些情况下,将数据分为多个表可能会提高查询性能。例如,如果您的数

Qt(day5)

思维导图将登录操作和数据库绑定mywnd.h#ifndefMYWND_H#defineMYWND_H#include<QMainWindow>#include<QLabel>#include<QLineEdit>#include<QPushButton>#include<QDebug>#include<QMessage

程序人生,中秋共享

程序人生,中秋共享随着科技的迅速发展,中秋节也悄然发生了变化。在这个传统的团圆节日里,程序人生与中秋共享形成了新的气象。在本文中,我将结合自己的职业经历,探讨程序人生与中秋共享之间的联系与意义。【中秋与程序人生的交融】作为程序员,我们每天都在和代码打交道,通过一行行指令来构建世界。然而,在这个机械化的过程中,我们也不忘

LLM预训练之RLHF(一):RLHF及其变种

在ChatGPT引领的大型语言模型时代,国内外的大模型呈现爆发式发展,尤其是以年初的LLaMA模型为首的开源大模型和最近百川智能的baichuan模型,但无一例外,都使用了「基于人类反馈的强化学习」(RLHF)来提升语言模型的性能,并在模型重注入了人类的偏好,以提高模型的有用性和安全性。不过RLHF也早已更新换代,我们

热文推荐