Redis 支持多种数据类型,主要包括字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(ZSet)以及流(Stream)。要高效存储数据,需根据业务场景选择合适类型:简单缓存或计数器使用 String;对象存储使用 Hash;消息队列或栈使用 List;唯一性集合使用 Set;排行榜使用 ZSet;实时消息流使用 Stream。合理利用底层编码(如 SDS、压缩列表)也能提升内存效率,同时结合持久化策略(RDB/AOF)确保数据安全。
Redis 五种数据类型及应用场景
Redis 五种数据类型及应用场景 的字符串类型有哪些应用场景?redis 的列表类型常用于哪些场景?redis 特点 1.所有 数据存储 在内存中,高速读写 2.提供丰富多样的数据类型:string, hash, list,set, sorted set 3.提供了 aof 和 rdb 两种数据的持久化保存方式,保证了 redis 重启后数据不丢失 4. redis 的所有操作都是原子性的,还支持对几个操作合并后的原子性操作,支持事务 通常我们都把数据存到 关系型数据库 中,但为了提升应用的性能,我们应该把访频率高且不会经常变动的 数据缓存 到内存中。redis 没有像 mysql 这类关系型 数据库 那样强大的查询功能,需要考虑如何把关系型数据库中的数据,合理的对应到缓存的 key-value 数据结构 中。redis 数据类型 redis 支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合) 及 zset(sorted set:有序集合). string(字符串) 简介 1. string 是 redis 最基本的类型,你可以理解成与 memcached 一模一样的类型,一个 redis 五种数据类型及应用场景(撰于 2026 年 4 月 12 日)
Redis 系列 |(一) 六种基本数据结构
Redis 系列 |(一) 六种基本数据结构 二、Redis 六种基本数据结构 Redis 有 6 种基础数据结构,它们分别是:string(字符串)、list(列表)、hash(字典)、set(集合)、zset(有序集合) 和 Stream(流)。这 6 种是 Redis 相关知识中最基础、最重要的部分,下面我们结合源码以及一些实践来给大家分别讲解一下。1) 字符串 string 设置和获取键值对 代码语言:javascript AI 代码解释 正如你看到的,我们通常使用 SET 和 GET 来设置和获取字符串值。值可以是任何种类的字符串 (包括二进制数据),例如你可以在一个键下保存一张 .jpeg 图片,只需要注意不要超过 512 MB 的最大限度就好了。当 key 存在时,SET 命令会覆盖掉你上一次设置的值:代码语言:javascript AI 代码解释 另外你还可以使用 EXISTS 和 DEL 关键字来查询是否存在和删除键值对:代码语言:javascript AI 代码解释 批量设置键值对 代码语言:javascript AI 代码解释 过期和 SET 命令扩展 可以对 key 设置过期时间,到时间会被自动删除,这个功能常用来控制缓存的失效时间。(过期可以是任意数据结构) 代码语言:javascript AI 代码解释 等价于 SET+ EXPIRE 的 SETNX 命令:代码语言:javascript AI 代码解释 计数 如果 value 是一个整数,还可以对它使用 INCR 命令进行 原子性的自增操作,这意味着及时多个客户端对同一个 key 进行操作,也决不会导致竞争的情况:代码语言:javascript AI 代码解释 返回原值的 GETSET 命令 对字符串,还有一个 GETSET 比较让人觉得有意思,它的功能跟它名字一样:为 key 设置一个值并返回原值:代码语言:javascript AI 代码解释 这可以对于某一些需要隔一段时间就统计的 key 很方便的设置和查看,例如:系统每当由用户进入的时候你就是用 INCR 命令操作一个 key,当需要统计时候你就把这个 key 使用 GETSET 命令重新赋值为 0,这样就达到了统计的目的。(2025 年 10 月 18 日)
浅谈 Redis 的五大数据类型及其应用
浅谈 Redis 的五大数据类型及其应用 Redis 是一种开源的内存数据结构存储系统,它支持多种数据类型,包括字符串 String、列表 list、集合、哈希表和有序集合。这些数据类型在 Redis 中有着广泛的应用场景,可以满足不同的业务需求。本文将介绍 Redis 的五大数据类型及其应用。一、string 数据类型 常用命令:最常用:set key value / get key 同时设置/获取多个键值:mset key value [key value] 数值增减:递增数字:incr key 增加指定的整数:incrby key increment 递减数字:decr key 减少指定的整数:decrby key decrement 获取字符串长度:strlen key 分布式锁:setnx key value set key value [EX seconds][PX millisecond] [NX][XX] -> set lock pay ex 10 nx EX:秒过期 PX:毫秒过期 NX:key 不存在的时候创建 XX:key 存在的时候,覆盖 应用场景:喜欢的商品,商品编号/订单号采用 incr 命令生成 是否喜欢的文章 (点赞):阅读数,只要点击 rest 地址,直接可以使用 incr key 命令增加一个数字 1,取消喜欢 decr key,完成记录数字 二、hash 数据类型 常用命令:一次设置/获取一个字段值:hset key field value / hget key field hset key person name z3 一次设置/获取多个字段值:hmset key field value [field value] / hmget key field [field] hmset key person name z3 age 23 获取所有字段值 (key value 全部信息):hgetall key 获取某个 key 内的全部数量:hlen 删除一个 key:hdel 应用场景:1) 购物车中小厂新增商品:hset shopcar:uid1024 prod334466 1 新增商品:hset shopcar:uid1024 prod334477 1 增加商品数量:hincrby shopcar:uid1024 prod334466 1 商品总数:hlen shopcar:uid1024 全部选择 (全部商品信息):hgetall shopcar:uid1024 2) 秒杀商品存储 <秒杀场次 id,<秒杀商品 id,秒杀商品信息>> 三、list 数据类型 (有序重复) 常用命令:一次设置/获取一个字段值:hset key field value / hget key field hset key person name z3 一次设置/获取多个字段值:hmset key field value [field value] / hmget key field [field] hmset key person name z3 age 23 获取所有字段值 (key value 全部信息):hgetall key 获取某个 key 内的全部数量:hlen 删除一个 key:hdel 应用场景:微信文章订阅公众号:两个公众号:李永乐老师,csdn 发布两篇文章 11 和 22 只要他们发布文章聚会进到我的 list lpush likearticle:userId 11 22 查看文章,类似分页,0-10 lrange likearticle:userId 0 10(2026 年 1 月 30 日的资料)
万字长文的 Redis 五种数据结构详解 (理论 + 实战),建议收藏。
万字长文的 Redis 五种数据结构详解 (理论 + 实战),建议收藏。 很多人都知道 Redis 的五种数据结构包括以下五种:String:字符串类型 List:列表类型 Set:无序集合类型 ZSet:有序集合类型 Hash:哈希表类型 但是作为一名优秀的程序员可能不能只停留在只会用这五种类型进行 crud 工作,还是得深入了解这五种数据结构的底层原理。Redis 核心对象 在 Redis 中有一个「核心的对象」叫做 redisObject,是用来表示所有的 key 和 value 的,用 redisObject 结构体来表示 String、Hash、List、Set、ZSet 五种数据类型。redisObject 的源代码在 redis.h 中,使用 c 语言写的,感兴趣的可以自行查看,关于 redisObject 我这里画了一张图,表示 redisObject 的结构如下所示:闪瞎人的五颜六色图 在 redisObject 中「type 表示属于哪种数据类型,encoding 表示该数据的存储方式」,也就是底层的实现的该数据类型的数据结构。因此这篇文章具体介绍的也是 encoding 对应的部分。那么 encoding 中的存储类型又分别表示什么意思呢?具体数据类型所表示的含义,如下图所示:图片截图出自《Redis 设计与实现第二版》可能看完这图,还是觉得一脸懵。不慌,会进行五种数据结构的详细介绍,这张图只是让你找到每种中数据结构对应的储存类型有哪些,大概脑子里有个印象。举一个简单的例子,你在 Redis 中设置一个字符串 key 234,然后查看这个字符串的存储类型就会看到为 int 类型,非整数型的使用的是 embstr 储存类型,具体操作如下图所示:String 类型 String 是 Redis 最基本的数据类型,上面的简介中也说到 Redis 是用 c 语言开发的。但是 Redis 中的字符串和 c 语言中的字符串类型却是有明显的区别。String 类型的数据结构存储方式有三种 int、raw、embstr。那么这三种存储方式有什么区别呢?int Redis 中规定假如存储的是「整数型值」,比如 set num 123 这样的类型,就会使用 int 的存储方式进行存储,在 redisObject 的「ptr 属性」中就会保存该值。SDS 假如存储的「字符串是一个字符串值并且长度大于 32 个字节」就会使用 SDS(simple dynamic string) 方式进行存储,并且 encoding 设置为 raw;若是「字符串长度小于等于 32 个字节」就会将 encoding 改为 embstr 来保存字符串。SDS 称为「简单动态字符串」,对于 SDS 中的定义在 Redis 的源码中有的三个属性 int len、int free、char buf[]。len 保存了字符串的长度,free 表示 buf 数组中未使用的字节数量,buf 数组则是保存字符串的每一个字符元素。(搜索结果收录于 2026 年 4 月 8 日)
Redis 5 种基本数据类型
Redis 5 种基本数据类型 支持哪些基本数据类型?redis 的字符串类型有哪些常用命令?如何在 redis 中使用列表类型?redis 有几种基本数据类型?redis 共有 5 种基本数据类型:string ( 字符串 ), list (列表), set (集合), hash (散列), zset (有序集合). 这 5 种数据类型是直接提供给用户使用的,是数据的保存形式,其底层实现主要依赖这 8 种 数据结构:简单动态字符串 (sds),linkedlist(双向链表),dict(哈希表/字典),skiplist(跳跃表),intset(整数集合),ziplist(压缩列表),quicklist(快速列表). 2bd5084d1d5c467b9e6b2995c67b3afc.png redis 是一个开源的内存数据结构存储系统,它支持多种数据类型,包括字符串,哈希表,列表,集合和有序集合。这些数据类型使得 redis 成为一个非常灵活和强大的 数据存储 系统,可以用于各种不同的应用场景,如缓存,消息队列,排行榜等。以下是 redis 的五种基本数据类型及其详细解释:字符串 (string) redis 中的字符串类型是一种二进制安全的类型,可以存储任何二进制数据,包括图片,音频,视频等文件。字符串类型还支持一些常用的操作,如获取字符串长度,追加字符串,截取字符串等。此外,redis 还支持对字符串类型进行模式匹配,可以使用类似于正则表达式的模式进行匹配。这种模式匹配功能可以用于实现一些通用的搜索和过滤功能。d5f6e26c37b5433bada0eafe5f40bae9.png 哈希表 (hash) redis 5 种基本数据类型(截至 2024 年 2 月 20 日)
FAQ
Redis 支持哪些基本数据类型?
Redis 共有 5 种基本数据类型:string(字符串), list(列表), set(集合), hash(散列), zset(有序集合),此外还有 Stream(流) 类型。
字符串类型最大能存多少数据?
在 Redis 中字符串类型的 Value 最多可以容纳的数据长度是 512M。
如何高效选择数据类型?
根据业务场景选择,如缓存用 String,对象用 Hash,队列用 List,排行榜用 ZSet,消息流用 Stream。