游乐游手机版
首页/数据库/文章详情

Redis常见数据类型详解与应用场景

时间:2026-08-14 18:08
Redis 主要支持以下几种常见数据类型: string(字符串): 最基础的数据存储类型,可用于保存字符串、整数或浮点数。 hash(哈希):一种键值对集合,适合在一个 key 中存储多个字段。 list(列表):一个简单的有序列表,可存放一系列字符串元素。 set(集合):一个无序集合,可保存不

Redis 主要支持以下几种常见数据类型:

  • string(字符串): 最基础的数据存储类型,可用于保存字符串、整数或浮点数。
  • hash(哈希):一种键值对集合,适合在一个 key 中存储多个字段。
  • list(列表):一个简单的有序列表,可存放一系列字符串元素。
  • set(集合):一个无序集合,可保存不重复的字符串成员。
  • zset(sorted set:有序集合): 与集合类似,但每个成员都会关联一个分数(score)。
  • 位图(Bitmaps):基于字符串类型实现,可对二进制位进行操作。
  • 超日志(HyperLogLogs):用于基数统计,能够估算集合中的唯一元素数量。
  • 地理空间(Geospatial):用于保存和处理地理位置信息。
  • 发布/订阅(Pub/Sub):一种消息通信模式,允许客户端订阅频道,并接收发布到该频道的消息。
  • 流(Streams):适用于消息队列与日志存储,支持消息持久化和按时间排序。
  • 模块(Modules):Redis 支持动态加载模块,从而扩展更多功能。

String(字符串)

string 是 Redis 中最基础、最常用的数据类型,你可以把它理解为与 Memcached 类似的 key-value 存储结构,一个 key 对应一个 value。

string 类型具备二进制安全特性,这意味着 Redis 的 string 可以保存任意数据,例如 jpg 图片内容或序列化后的对象。

string 类型是 Redis 最基本的数据类型,单个 string 值最大可存储 512MB。

常用命令

  • SET key value:设置键对应的值。
  • GET key:读取键对应的值。
  • INCR key:将键的值递增 1。
  • DECR key:将键的值递减 1。
  • APPEND key value:把新值追加到原有值后面。

实例

redis 127.0.0.1:6379> SET runoob "菜鸟教程"
OK
redis 127.0.0.1:6379> GET runoob
"菜鸟教程"

在以上示例中,使用了 Redis 的 SET 和 GET 命令。键为 runoob,对应的值是 菜鸟教程。

注意:一个键最大可存储 512MB 数据。

Hash(哈希)

Redis hash 是一个键值(key=>value)对集合,类似一个轻量级的 NoSQL 数据结构。

Redis hash 本质上是 string 类型的 field 和 value 映射表,因此特别适合用于存储对象属性。

每个哈希最多可存储 2^32 - 1 个键值对。

    常用命令

  • HSET key field value:设置哈希表中指定字段的值。
  • HGET key field:获取哈希表中指定字段的值。
  • HGETALL key:获取哈希表中的所有字段和值。
  • HDEL key field:删除哈希表中的一个或多个字段。

实例

DEL runoob 用于删除前面测试过的 key,否则会报错:(error) WRONGTYPE Operation against a key holding the wrong kind of value

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> HMSET runoob field1 "Hello" field2 "World"
"OK"
redis 127.0.0.1:6379> HGET runoob field1
"Hello"
redis 127.0.0.1:6379> HGET runoob field2
"World"

这个示例中,使用的是 Redis 的 HMSET、HGET 命令。HMSET 用于一次写入多个 field=>value 键值对,而 HGET 则负责读取指定 field 对应的 value。

List(列表)

Redis 的列表本质上是一个按照插入顺序排序的字符串列表。元素既可以插入到列表头部(左侧),也可以追加到列表尾部(右侧)。

列表最多可以存储 2^32 - 1 个元素。

常用命令

  • LPUSH key value:将值插入到列表头部。
  • RPUSH key value:将值插入到列表尾部。
  • LPOP key:移除并获取列表中的第一个元素。
  • RPOP key:移除并获取列表中的最后一个元素。
  • LRANGE key start stop:获取列表指定范围内的元素。

实例

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> lpush runoob redis
(integer) 1
redis 127.0.0.1:6379> lpush runoob mongodb
(integer) 2
redis 127.0.0.1:6379> lpush runoob rabbitmq
(integer) 3
redis 127.0.0.1:6379> lrange runoob 0 10
1) "rabbitmq"
2) "mongodb"
3) "redis"
redis 127.0.0.1:6379>

Set(集合)

Redis 的 Set 是 string 类型元素组成的无序集合。

集合底层通常通过哈希表实现,因此在添加、删除和查找成员时,时间复杂度通常为 O(1)。

常用命令

  • SADD key value:向集合中添加一个或多个成员。
  • SREM key value:从集合中移除一个或多个成员。
  • SMEMBERS key:返回集合中的全部成员。
  • SISMEMBER key value:判断某个值是否为集合成员。

sadd 命令

向 key 对应的 set 集合中添加一个 string 元素,成功返回 1;如果该元素已存在于集合中,则返回 0。

sadd key member

实例

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> sadd runoob redis
(integer) 1
redis 127.0.0.1:6379> sadd runoob mongodb
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabbitmq
(integer) 1
redis 127.0.0.1:6379> sadd runoob rabbitmq
(integer) 0
redis 127.0.0.1:6379> smembers runoob
1) "redis"
2) "rabbitmq"
3) "mongodb"

注意:以上示例中 rabbitmq 被添加了两次,但由于集合元素具有唯一性,第二次插入会被自动忽略。

集合中最大的成员数为 232 - 1(4294967295,即每个集合可存储 40 多亿个成员)。

zset(sorted set:有序集合)

Redis 的 zset 和 set 一样,都是 string 类型元素的集合,且成员不允许重复。

不同之处在于,每个元素都会关联一个 double 类型的分数。Redis 正是通过这个分数对集合中的成员按从小到大进行排序。

zset 中的成员是唯一的,但分数(score)可以重复。

常用命令

  • ZADD key score value:向有序集合添加一个或多个成员,或更新已有成员的分数。
  • ZRANGE key start stop [WITHSCORES]:返回指定范围内的成员。
  • ZREM key value:移除有序集合中的一个或多个成员。
  • ZSCORE key value:返回有序集合中某个成员的分数值。

zadd 命令

向有序集合添加元素,如果元素已存在,则更新其对应的 score。

zadd key score member 

实例

redis 127.0.0.1:6379> DEL runoob
redis 127.0.0.1:6379> zadd runoob 0 redis
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 mongodb
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabbitmq
(integer) 1
redis 127.0.0.1:6379> zadd runoob 0 rabbitmq
(integer) 0
redis 127.0.0.1:6379> ZRANGEBYSCORE runoob 0 1000
1) "mongodb"
2) "rabbitmq"
3) "redis"

其他高级数据类似

HyperLogLog

  • 用于基数估算的数据结构。
  • 常用于统计唯一值数量的近似结果。

Bitmaps

  • 位数组结构,可对字符串执行位运算操作。
  • 常用于布隆过滤器等位运算场景。

Geospatial Indexes

  • 用于处理地理空间数据,支持地理位置索引和半径范围查询。
    • Streams

      • 一种日志型数据结构,支持时间序列数据处理。
      • 常用于消息队列、事件流和实时数据处理场景。
来源:https://www.runoob.com/redis/redis-data-types.html
上一篇Redis发布订阅机制详解与使用场景优化 下一篇MongoDB覆盖索引查询原理与优化实践
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Redis是什么:核心特性、架构与应用场景解析
数据库 · 2026-09-01

Redis是什么:核心特性、架构与应用场景解析

Redis是一款基于内存的键值型NoSQL数据库,以超高读写速度和丰富的数据结构著称。本文系统梳理Redis的核心特性、架构组成、性能优势及典型应用场景,并通过与Memcached、MySQL、MongoDB的对比,帮助开发者快速判断Redis是否适合当前业务需求。

Windows 安装 MongoDB 完整图文教程
数据库 · 2026-09-01

Windows 安装 MongoDB 完整图文教程

本文详细介绍在 Windows 系统上安装 MongoDB 的完整流程。从官网下载 MSI 安装包开始,逐步演示自定义安装路径、配置 Windows 服务、跳过 MongoDB Compass 等关键选项,并提供通过系统服务列表验证安装是否成功的方法,帮助开发者快速搭建本地 MongoDB 环境。

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动
数据库 · 2026-09-01

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动

本文详解在 Linux 系统下安装 MongoDB 的完整流程,涵盖依赖包安装、二进制包下载解压、环境变量配置、数据与日志目录创建及服务启动验证。通过标准化命令与路径说明,帮助开发者快速完成部署并确认服务状态。

MacOS安装MongoDB完整教程
数据库 · 2026-09-01

MacOS安装MongoDB完整教程

本文介绍在MacOS系统下安装MongoDB的完整流程,涵盖下载、解压、目录配置、环境变量设置及服务启动。通过明确的命令与参数说明,帮助开发者快速完成环境搭建并验证安装结果。

Ubuntu系统安装与配置Redis完整指南
数据库 · 2026-09-01

Ubuntu系统安装与配置Redis完整指南

本文详解在Ubuntu系统中安装Redis的两种主流方式:apt在线安装与源码编译安装。涵盖版本选择逻辑、服务启停与状态检查、连接验证方法,以及在线练习工具与桌面GUI客户端的对比与使用建议,帮助开发者快速搭建并验证Redis运行环境。