Redis 数据类型和命令大全

举报
架构师聊技术 发表于 2021/12/22 10:43:17 2021/12/22
【摘要】 Redis 是一种速度非常快的非关系型数据库解决方案。其简单的键值数据模型使 Redis 能够处理大型数据集,同时保持令人印象深刻的读写速度和可用性。Redis 允许您使用各种数据类型(例如列表、哈希、集合和排序集合)来存储和管理数据。

在本教程中,了解Redis 数据类型的工作原理并掌握每种数据类型的基本命令

Redis 数据类型

键值数据库通过一个唯一的键对应数据对象的数据。使用该键来管理和检索分配给该特定键的值。任何大小不超过 512 MB 的二进制序列都可以用作 Redis 键,然后与简单的字符串或其他抽象数据结构相关联。

Redis 键通过使用七种不同数据类型之一映射到值:

  • 字符串
  • 列表
  • 哈希值
  • 集合
  • 排序集合
  • 基数统计
  • 位图 (BitStrings)

字符串

字符串表示可以附加到键的最小值。字符串值的最大允许大小为 512 MB,包含任何字符序列。在Redis中,键值对的键部分也是一个字符串。

使用这种数据结构的数据库通常被称为字符串到字符串键值存储。

由于所有数据都在一个对象中,Redis 中的字符串操作非常快。基本的 Redis 命令,如SETGETDEL允许您对字符串值执行基本操作。

  • SET key value – 设置指定键的值。
  • GET key – 检索指定键的值。
  • DEL key – 删除给定键的值。

以下示例说明了如何在redis-cli交互式 shell 中使用这些简单的命令。该SET命令将值添加到键,同时该GET命令获取并显示该值。如果没有值映射到键,则GET命令的输出为(nil)

Redis 数据类型和命令大全


如果存在某个值,则该DEL命令的输出将显示要删除的项目数。添加新的键和值不会影响数据库性能或处理速度。

用例:字符串主要用于缓存 HTML 元素、小部件,甚至整个网页。会话和用户特定数据存储在内存中,以加快和增强网站浏览体验。Redis 字符串还可以促进资源分配,作为对消息传递或流量平衡应用程序的补充。

列表

Redis 允许您将有序的字符串序列与键相关联。这个字符串链表允许您执行一组操作,例如:

  • LPUSH – 将值推送到列表的左端。
  • RPUSH – 将值推送到列表的尾端。
  • LRANGE – 检索一系列项目。
  • LPOP/RPOP – 用于显示和移除两端的项目。
  • LINDEX – 从列表中的特定位置获取值。

使用LPUSH/RPUSH命令向列表添加值时,输出提供当前项目数。然后,您可以使用以下LRANGE命令获取整个列表,以0作为开始并-1表示最后一个索引项。

使用LINDEX命令从链接列表中检索特定值或使用命令删除项目LPOP/RPOP

Redis 数据类型和命令大全


向链表添加值是一种有效的操作,无论其大小如何都不会影响写入速度。但是,从链表中读取数据可能取决于键值对值侧的字符串数量。

用例:链表提供的可能性使其成为存储实时数据更新例,如社交媒体帖子或日志的理想数据类型。

哈希值

Redis 哈希存储键值对的无序映射。散列键与值相关联。该值是一个包含其他键值对的 Redis 字符串。您不能使用其他复杂的数据结构,例如 Sets、Lists 或其他 Hashes 作为值。

基本哈希命令允许您独立访问和更改单个或多个字段。

  • HSET – 将值映射到散列中的键。
  • HGET – 检索与散列中的键关联的单个值。
  • HGETALL – 显示整个哈希内容。
  • HDEL – 从散列中删除现有的键值对。

每次使用HSET命令将项目添加到散列时,返回值会(integer) n通知您条目是否已存在以及实例数。使用该HDEL命令时会提供相同的信息。

Redis 数据类型和命令大全


用例:哈希可以非常有效地存储数百万甚至数十亿个对象。可用字段的数量使得哈希对于维护大量单个对象,例如用户数据非常有用。

集合

Redis 集是唯一字符串的无序集合。由于集合没有排序,您不能像列表一样从索引的前端或末尾删除项目。但是,字符串是唯一的,并且同一项目的多个实例不可能出现在一个集合中。

使用以下命令添加、删除、检索和检查集合中的单个项目:

  • SADD – 将一个或多个项目添加到一个集合中。
  • SISMEMBER – 找出一个项目是否是一个集合的一部分。
  • SMEMBERS – 从集合中检索所有项目。
  • SREM – 从集合中删除现有项目。

将同一项目多次添加到一个集合中总是会产生一个副本。因此,您不需要使用SMEMBERSorSISMEMBER命令来确定项目是否已经是集合的成员。

使用该SADD命令确保集合中没有重复的条目。

Redis 数据类型和命令大全


用例: Redis 集非常适合跟踪独一无二的事件,例如独特的页面浏览量或单个 IP。集合还支持高级操作,例如并集、交集和差操作。

排序集合

排序集或ZSET是 Redis 中最高级的数据类型之一。

排序集键值对的值部分由称为成员的唯一字符串元素(键)和称为分数的项目(值)组成。排序集将每个元素映射到一个浮点值 ( score ) 并使用该值以特定顺序对元素进行排序。

您可以按成员、排序顺序和分数值访问排序集中的项目。基本命令允许您根据成员值和分数范围获取、添加、删除单个值或检索项目。

  • ZADD – 将具有分数的成员添加到排序集中。
  • ZRANGE – 根据项目在排序顺序中的位置检索项目。该withscores 选项产生实际的分数值。
  • ZRANGEBYSCORE– 根据定义的分数范围从排序集中获取项目。该withscores 选项产生实际的分数值。
  • ZREM从排序集中删除项目。

只有成员分数对的成员值被视为唯一的。如果您将两个不同的分数与同一个成员值相关联,则排序集中只会出现最新添加的分数。如果两个不同的成员具有相同的分数, Redis 会按字母数字顺序对值进行排序。

Redis 数据类型和命令大全


用例:单个排序集可以使用ZRANGEZREVRANGERedis 命令跟踪并提供在线比赛中玩家分数的有序排行榜。

基数统计

HyperLogLogs 提供集合中唯一项目的估计计数。与其他解决方案相反,HyperLogLogs 中的项目不会被单独计算,因为这需要跟踪之前的项目以避免对相同元素进行两次计数。此类操作需要的内存量等于用于存储数据的内存量。

HyperLogLog 结构使用更有效的概率算法来估计集合的大小,而不是计算每个项目。估计的错误率低于 1%。

HyperLogLog 命令允许您添加项目、检索唯一项目的估计计数以及创建多个 HyperLogLog 的联合。

  • PFADD – 向 HyperLogLog 添加一个或多个元素。
  • PFCOUNT – 从单个 HyperLogLog 中获取估计的唯一项目数。
  • PFMERGE – 将不同的 HyperLogLog 合并为一个 HyperLogLog。

结果的准确性可能因集合的大小而异。但是,如果您不需要精确的项目计数,则此概率结构允许您仅使用原本需要的内存的一小部分。

用例:使用 HyperLogLogs 来聚合和计算唯一的用户交互或查询。

位图

Redis 字符串是一个二进制序列,最大大小为 512 兆字节。位图允许您使用适当的命令在位级别上操作字符串。

  • SETBIT – 基于 0 或 1 值定义或清除该位。
  • GETBIT – 检索由键指定的字符串值的位值。
  • BITOP – 在字符串之间执行按位运算。
  • BITPOS – 找到字符串中设置为 1 或 0 的第一位。
  • BITCOUNT – 计算字符串中设置为 1 的位数。

能够操作字符串的位提供了特殊的节省空间的机会。它还提供了一种直接访问和处理数据基本元素的方法。

用例:对位进行操作简化了实时分析、人口计数器和跟踪用户活动。位图经常用于存储可以表示为连续键之间的布尔值是/否分隔的数据。

全面了解 Redis 数据类型以及与每个数据结构相关的基本命令。为在应用程序中设计合适的存储解决方案提供了灵活性。

喜欢的朋友记得给关注~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。