iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >(Redis基础教程之八) 如何在Redis中管理Sets
  • 589
分享到

(Redis基础教程之八) 如何在Redis中管理Sets

(Redis基础教程之八)如何在Redis中管理Sets 2015-12-21 12:12:52 589人浏览 无得
摘要

本教程说明了如何创建Sets,检索和删除成员以及比较不同Sets的成员。 如何使用本指南 本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。 本指南中显示的命令已在运行Redis版本4.0.9的ubuntu

(Redis基础教程之八) 如何在Redis中管理Sets

教程说明了如何创建Sets,检索和删除成员以及比较不同Sets的成员。

如何使用本指南

本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。

本指南中显示的命令已在运行Redis版本4.0.9的ubuntu 18.04服务器上进行了测试。要设置类似的环境,您可以按照我们的指南如何在Ubuntu 18.04上安装和保护Redis的步骤1进行操作。我们将通过使用Redis命令行界面运行它们来演示这些命令的行为。请注意,如果您使用其他Redis界面(例如Redli),则某些命令的确切输出可能会有所不同。redis-cli

另外,您可以提供一个托管的Redis数据库实例来测试这些命令,但是请注意,根据数据库提供者所允许的控制级别,本指南中的某些命令可能无法按所述方式工作。要配置DigitalOcean托管数据库,请遵循我们的托管数据库产品文档。然后,您必须 安装Redli 设置TLS隧道才能通过TLS连接到托管数据库。

创建Sets

sadd命令允许您创建一个Sets并向其中添加一个或多个成员。下面的例子将创建一组在一个名为键key_horror与成员"Frankenstein""Godzilla"

sadd key_horror "Frankenstein" "Godzilla"

如果成功,sadd将返回一个整数,显示它添加到Sets中的成员数量:

(integer) 2

如果您尝试将Sets的成员添加到已经持有非Sets值的键中,它将返回错误。在此块中的第一个命令创建一个列表命名的key_action一个元素,"Shaft"。下一条命令尝试将set成员添加"Shane"到列表中,但是由于数据类型冲突而产生错误:

rpush key_action "Shaft"
sadd key_action "Shane"


(error) WRONGTYPE Operation against a key holding the wrong kind of value

请注意,Sets不允许同一成员出现多次:

sadd key_comedy "It"s" "A" "Mad" "Mad" "Mad" "Mad" "Mad" "World"


(integer) 4

即使此sadd命令指定了八个成员,它也会丢弃四个重复的"Mad"成员,从而将大小设置为4。

从Sets中检索成员

在本节中,我们将介绍一些Redis命令,这些命令返回有关Sets中持有的成员的信息。要练习此处概述的命令,请运行以下命令,这将创建一个由六个成员组成的Sets,该Sets的键为key_stooges

sadd key_stooges "Moe" "Larry" "Curly" "Shemp" "Joe" "Curly Joe"

要从Sets中返回每个成员,请运行smembers命令,然后输入要检查的密钥:

smembers key_stooges


1) "Curly"
2) "Moe"
3) "Larry"
4) "Shemp"
5) "Curly Joe"
6) "Joe"

要检查特定值是否是Sets的成员,请使用以下sismember命令:

sismember key_stooges "Harpo"

如果元素"Harpo"key_stoogesSets的成员,sismember则将返回1。否则,它将返回0

(integer) 0

要查看给定Sets中有多少成员(换句话说,找到给定Sets的_基数_),请运行scard

scard key_stooges


(integer) 6

要从Sets中返回随机元素,请运行srandmember

srandmember key_stooges


"Larry"

要从Sets中返回多个随机,不同的元素,可以在srandmember命令后加上要检索的元素数量:

srandmember key_stooges 3


1) "Larry"
2) "Moe"
3) "Curly Joe"

如果您向传递一个负数srandmember,则该命令可以多次返回相同的元素:

srandmember key_stooges -3


1) "Shemp"
2) "Curly Joe"
3) "Curly Joe"

srandmember尽管所使用的随机元素函数的性能在较大的数据集中有所改善,但它并不是完全随机的。有关更多详细信息,请参见命令的官方文档。

从Sets中删除成员

Redis的带有用于从一组删除成员三个命令:spopsrem,和smove

spop从中随机选择指定数量的成员并返回它们,类似于srandmember,但是从Sets中删除它们。它接受包含Sets的键名和要从Sets中删除的成员数作为参数。如果您未指定数字,spop则默认为返回并删除单个值。

以下示例命令将从key_stooges上一节创建的Sets中删除并返回两个随机选择的元素:

spop key_stooges 2


1) "Shemp"
2) "Larry"

srem 允许您从Sets中删除一个或多个特定成员,而不是随机成员:

srem key_stooges "Joe" "Curly Joe"

而不是返回从Sets中删除的成员,而是srem返回一个整数,显示已删除的成员数:

(integer) 2

使用smove一个成员从一组移动到另一个。此命令以该顺序接受源集,目标集和要移动的成员作为参数。请注意,一次smove只能移动一位成员:

smove key_stooges key_jambands "Moe"

如果命令成功移动了成员,它将返回(integer) 1

(integer) 1

如果smove失败,它将返回(integer) 0。请注意,如果目标键尚不存在,请smove在将成员移入之前创建它。

比较集

Redis还提供了许多命令,可以找到Sets之间的差异和相似性。为了演示如何工作的,这部分将引用一个名为三套presidentskingsbeatles。如果您想亲自尝试本节中的命令,请创建这些Sets并使用以下sadd命令填充它们:

sadd presidents "George" "John" "Thomas" "James"
sadd kings "Edward" "Henry" "John" "James" "George"
sadd beatles "John" "George" "Paul" "Ringo"

sinter比较不同的Sets并返回_Sets相交_或出现在每个Sets中的值:

sinter presidents kings beatles


1) "John"
2) "George"

sinterstore执行类似的功能,但不是返回相交成员,而是在包含这些相交成员的指定目的地创建了一个新Sets。请注意,如果目的地已经存在,sinterstore将覆盖其内容:

sinterstore new_set presidents kings beatles
smembers new_set


1) "John"
2) "George"

sdiff返回_Sets差异_ —由以下每个Sets的第一个指定Sets的​​差异得出的成员:

sdiff presidents kings beatles


1) "Thomas"

换句话说,sdiff查看第一个给定Sets中的每个成员,然后将其与每个连续Sets中的成员进行比较。第一组中也出现在以下组中的任何成员都将被删除,并sdiff返回其余成员。可以将其视为从第一组中删除后续组的成员。

sdiffstore执行与相似的功能sdiff,但不返回Sets差,而是在给定的目的地创建一个包含Sets差的新Sets:

sdiffstore new_set beatles kings presidents
smembers new_set


1) "Paul"
2) "Ringo"

像一样sinterstoresdiffstore将覆盖目标键(如果已存在)。

suNIOn返回_Setsunion_或包含您指定的每个Sets的每个成员的Sets:

sunion presidents kings beatles


1) "Thomas"
2) "George"
3) "Paul"
4) "Henry"
5) "James"
6) "Edward"
7) "John"
8) "Ringo"

sunion 将结果视为新集,因为它只允许出现任何给定成员。

sunionstore 执行类似的功能,但是在给定的目的地创建一个包含Sets并集的新Sets,而不仅仅是返回结果:

sunionstore new_set presidents kings beatles


(integer) 8

sinterstore和一样sdiffstoresunionstore如果目标键已经存在,它将覆盖目标键。

结论

本指南详细介绍了用于在Redis中创建和管理集的许多命令。如果您想在本指南中概述其他相关的命令,参数或过程,请在下面的评论中提出疑问或提出建议。

有关Redis命令的更多信息,请参阅关于如何管理Redis数据库的系列教程。 作者:分布式编程 出处:https://zthinker.com/ 如果你喜欢本文,请长按二维码,关注 分布式编程 .分布式编程

您可能感兴趣的文档:

--结束END--

本文标题: (Redis基础教程之八) 如何在Redis中管理Sets

本文链接: https://www.lsjlt.com/news/5862.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何理解Python基础教程中Python pass语句
    如何理解Python基础教程中Python pass语句,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Python pass 语句Python pass是空语句...
    99+
    2023-06-02
  • Python基础教程之pip如何安装和卸载
    这篇文章主要讲解了“Python基础教程之pip如何安装和卸载”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python基础教程之pip如何安装和卸载”吧!一、pip的安装:win+R出现一...
    99+
    2023-07-02
  • 如何在Linux中管理Java教程的文件?
    在Linux操作系统中,Java是一种广泛使用的编程语言,因此在学习和开发Java应用程序时,我们需要管理Java教程的文件。本文将介绍如何在Linux中管理Java教程的文件,包括如何安装和配置Java环境,如何编写Java程序,以及如何...
    99+
    2023-09-27
    教程 文件 linux
  • 如何理解Go语言基础之网络编程
    本篇内容主要讲解“如何理解Go语言基础之网络编程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Go语言基础之网络编程”吧!socker编程我们所学的TC...
    99+
    2024-04-02
  • NumPy 基础教程:如何在 ASP 中使用 NumPy 库进行自然语言处理?
    NumPy(Numerical Python)是 Python 中用于科学计算的基础库之一。它提供了高效的数组操作和数学函数,是许多其他 Python 库的基础。在自然语言处理(NLP)领域,NumPy 也是必不可少的工具之一,可以用来处...
    99+
    2023-11-08
    load 自然语言处理 numy
  • 如何进行MySQL管理基础中的性能优化
    如何进行MySQL管理基础中的性能优化,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。 1.索引<1&g...
    99+
    2024-04-02
  • 如何在Redis中实现数据的过期清理
    在Redis中,可以通过设置数据的过期时间来实现数据的自动清理。可以通过以下两种方式来设置键的过期时间: 使用EXPIRE命令:...
    99+
    2024-03-14
    Redis
  • Redis如何在项目中合理使用经验分享
    概述 Redis作为一款性能优异的内存数据库,在互联网公司有着多种应用场景,本文将介绍Redis如何在项目中合理使用。 背景 Redis 是一个开源的内存数据结构存储系统。 可以作为数据库、缓...
    99+
    2024-04-02
  • 如何在PHP教程中使用Bash命令优化日志管理?
    PHP是一种非常流行的编程语言,可以用于开发各种网站和应用程序。然而,当我们在使用PHP进行开发的时候,经常会涉及到日志管理的问题。在这篇文章中,我将向你介绍如何在PHP教程中使用Bash命令来优化日志管理。 首先,让我们来了解一下什么是B...
    99+
    2023-09-16
    教程 bash 日志
  • 如何进行MySQL管理基础中的维护、备份和恢复
    如何进行MySQL管理基础中的维护、备份和恢复,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1.日志记录   &nb...
    99+
    2024-04-02
  • 如何理解MySQL管理基础中的安全、访问控制和权限
    如何理解MySQL管理基础中的安全、访问控制和权限,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。MySQL权限系统确保所有的用...
    99+
    2024-04-02
  • Maven入门教程之如何在idea中配置Maven
    目录一、下载Maven二、配置环境变量三、配置本地仓库四、配置镜像五、配置统一的JDK六、创建Maven项目七、Maven项目变为Web项目 总结一、下载Maven Mav...
    99+
    2024-04-02
  • Python教程进阶:如何在git中load和管理你的代码库?
    在软件开发过程中,代码版本管理是非常重要的一环。如果你正在学习Python并且想要管理自己的代码库,那么Git是一个必须掌握的工具。Git是一个免费的、开源的分布式版本控制系统,它可以让你跟踪和管理代码的变化,协作开发,以及备份和恢复你的...
    99+
    2023-06-26
    教程 load git
  • PHP教程中如何使用Bash来管理日志?
    PHP是一种流行的编程语言,常用于Web开发和服务器端编程。在使用PHP编写应用程序时,通常需要记录日志以便进行故障排除和性能优化。而Bash作为一种强大的命令行工具,可以帮助我们管理日志文件。本文将介绍如何在PHP教程中使用Bash来管理...
    99+
    2023-09-16
    教程 bash 日志
  • MySQL基础中如何理解用户和权限管理以及日志体系
    MySQL基础中如何理解用户和权限管理以及日志体系,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、MySQL用户1、基础描述在数据库的使...
    99+
    2024-04-02
  • 如何在PHP中实现教育学习管理系统
    教育学习管理系统是现代教育机构中必不可少的系统。它提供了一种集中管理学生、课程、教师和联系人的方式,同时也提供了一种在线学习的方式。本文将介绍如何使用PHP构建一个教育学习管理系统。确定系统需求在开始构建系统之前,我们需要确保自己清楚地了解...
    99+
    2023-05-20
    PHP 教育学习 管理系统
  • Python教程高手必备:如何在git中load和管理你的项目?
    Python是一种高级编程语言,它广泛应用于人工智能、机器学习、Web开发和数据科学等领域。在日常开发中,我们通常需要管理大量的代码文件和项目文件。为了更好地组织和管理代码,我们需要使用版本控制系统。Git是一种流行的版本控制系统,它可以...
    99+
    2023-06-26
    教程 load git
  • 如何在PHP开发中处理多线程和进程管理?
    如何在PHP开发中处理多线程和进程管理?简介:在PHP开发中,多线程和进程管理是一个重要的话题。随着应用程序变得越来越复杂,处理并发和高并发访问请求的能力变得至关重要。本文将介绍如何在PHP开发中处理多线程和进程管理的技术和工具。一、多线程...
    99+
    2023-11-03
    PHP并发编程 PHP多线程处理 PHP进程管理
  • 如何在编程中应用Git的分支管理?
    Git是一个版本控制系统,它可以追踪文件的修改历史,并允许多人同时进行协作开发。而Git的分支管理则是Git最为重要的功能之一,它使得开发者可以在不同的分支上进行独立的开发,同时保持主分支的稳定性。本文将介绍如何在编程中应用Git的分支管...
    99+
    2023-10-15
    编程算法 javascript git
  • PCIDSS2.3:如何在设备配置中管理应用程序
    作者:禅与计算机程序设计艺术 PCI DSS(Payment Card Industry Data Security Standards) 是国际标准化组织(ISO)于2008年发布的一套安全规范,...
    99+
    2023-09-02
    自然语言处理 人工智能 语言模型 编程实践 开发语言 架构设计
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作