Skip to content

Redis基本数据类型

类型简介

类型场景
String缓存对象、常规计数、分布式锁、共享session信息
List消息队列
Hash缓存对象、购物车
Set聚合计算:点赞、共同关注、抽奖活动
ZSet排序场景:排行榜、电话/姓名排序

命令文档

String类型

默认情况下,单个Redis字符串最大可以是512 MB。

信息

是 Redis 中最基础、最简单的数据类型。

它由一个键(key)对应一个值(value)构成,值可以是:

  • 普通字符串(如 "hello"
  • 整数(如 "123"
  • 浮点数(如 "3.14"

Redis 会根据值的内容自动进行类型识别和优化存储:

值类型Redis 内部存储方式存储结构占用空间
整数(Integer)使用 long 类型整型数值8 字节
浮点数(Float)使用 double 类型浮点数值8 字节
字符串(String)使用 SDS(Simple Dynamic String)动态字符串动态分配(通常大于 10 字节)

SDS(Simple Dynamic String) 是 Redis 自定义的字符串表示方式,相比 C 原生字符串更安全、高效,支持 O(1) 的长度获取、自动扩容等特性;

类型为整数类型时支持进行INCR、INCRBY操作;

类型为浮点数类型时支持进行INCRBYFLOAT操作;

基本命令

命令描述
SET key value设置键值对
GET key获取值
MSET key1 value1 [key2 value2 ...]同时设置多个键值对
MGET key1 [key2 ...]获取多个键对应的值
INCR key increment将值增加 1(适用于数字)
INCRBY key increment将键存储的整数值增加指定的增量
INCRBYFLOAT increment将键存储的浮点数值增加指定的增量
DECR key减少 1(很少用,如果需要减少可以在追加中使用incrby 将参数设置为负数)
APPEND key value追加字符串

追加参数

参数含义用法
EX seconds(常用)设置键的过期时间(以秒为单位)SET key value EX 60
NX(常用)仅当键不存在时才设置(Not eXists)SET key value NX
PX milliseconds设置键的过期时间(以毫秒为单位)SET key value PX 5000
XX仅当键存在时才设置(eXists)SET key value XX

LIST类型

信息

Redis 的 List(列表) 是一个有序的字符串元素集合,支持从头部(左边)或尾部(右边)添加/移除元素。它支持在两端进行高效的插入和删除操作,非常适合用于实现队列(Queue)和栈(Stack)等结构。

基本命令
命令描述
LPUSH key value [value ...]在列表左侧插入一个或多个值
RPUSH key value [value ...]在列表右侧插入一个或多个值
LPOP key移除并返回列表左侧第一个元素
RPOP key移除并返回列表右侧第一个元素
LRANGE key start stop获取指定范围内的元素(如 0 -1 表示全部元素)
LINDEX key index获取指定索引位置的元素
LLEN key返回列表的长度
LREM key count value移除列表中与 value 相等的元素,count 控制删除次数
LTRIM key start stop只保留指定范围内的元素,其余删除
BLPOP key [key ...] timeout阻塞式弹出列表左侧元素,用于构建阻塞队列
BRPOP key [key ...] timeout阻塞式弹出列表右侧元素

Hash

信息

Redis的Hash类型是一种数据结构,用于存储字段(field)和值(value)之间的映射关系。它非常适合用来表示对象,因为可以将对象的属性名作为字段,属性值作为对应的值。

Redis Hash是基于哈希表实现的,可以存储多个键值对。

当哈希中元素数量较少且值大小适当时,Redis会使用ziplist(压缩列表)作为内部编码以节省内存;当哈希中的元素增多或值变大时,会自动转换为hashtable(哈希表)以提高访问效率。

基本命令

命令名称语法格式描述
HSETHSET key field value设置哈希表 key 中字段 field 的值为 value
HGETHGET key field获取哈希表 key 中字段 field 的值。
HMSETHMSET key field1 value1 [field2 value2 ...]同时设置哈希表中多个字段和对应的值(已逐步被 HSET 替代)。
HMGETHMGET key field1 [field2 ...]获取哈希表中一个或多个字段的值。
HDELHDEL key field1 [field2 ...]删除哈希表中的一个或多个字段。
HEXISTSHEXISTS key field检查哈希表中是否存在指定字段,存在返回 1,否则返回 0
HKEYSHKEYS key获取哈希表中所有的字段名。
HVALSHVALS key获取哈希表中所有的字段值。
HGETALLHGETALL key获取哈希表中所有字段和值。返回格式为 [field1, value1, field2, ...]
HLENHLEN key获取哈希表中字段的数量。
HSETNXHSETNX key field value只有在字段 field 不存在时才设置其值。
HINCRBYHINCRBY key field increment将哈希表中字段的整数值增加 increment(可为负数)。
HINCRBYFLOATHINCRBYFLOAT key field increment将哈希表中字段的浮点数值增加 increment
HSCANHSCAN key cursor [MATCH pattern] [COUNT count]迭代哈希表中的键值对,适用于大数据量场景。

SET类型

Redis集合的最大大小是2^32 - 1个元素。

信息

Redis 的 SET 类型 是一种无序的、不重复的字符串集合。它非常适合用于存储一组唯一的元素,并支持常见的集合操作,如并集、交集、差集等。

基本命令

命令名语法格式描述说明
SADDSADD key member [member ...]向集合中添加一个或多个唯一成员。如果成员已存在则忽略。
SMEMBERSSMEMBERS key获取集合中的所有成员(无序)。
SISMEMBERSISMEMBER key member判断某个成员是否存在于集合中。存在返回 1,否则返回 0
SCARDSCARD key获取集合的成员数量(集合大小)。
SREMSREM key member [member ...]删除集合中的一个或多个成员。
SRANDMEMBERSRANDMEMBER key [count]随机返回一个或多个集合成员(不会删除)。
SPOPSPOP key [count]随机移除并返回一个或多个集合成员。
SMOVESMOVE source destination member将成员从一个集合移动到另一个集合。
SDIFFSDIFF key1 key2 [key3 ...]返回第一个集合与其他集合的差集。
SINTERSINTER key1 key2 [key3 ...]返回多个集合的交集。
SUNIONSUNION key1 key2 [key3 ...]返回多个集合的并集。

ZSET集合

信息

Redis 的 Sorted Set(也称为 ZSET)是一种特殊的集合类型,它除了存储成员(member)外,还为每个成员关联了一个分数(score),这使得成员可以按照分数进行排序。Sorted Set 非常适合需要有序数据的应用场景,例如排行榜、优先级队列等。

基本命令:

命令语法格式描述
ZADD`ZADD key [NXXX] [CH] [INCR] score member [score member ...]`
ZRANGEZRANGE key start stop [WITHSCORES]返回有序集中指定区间内的成员,按分数从低到高排序。使用 WITHSCORES 可以同时返回成员的分数。
ZREVRANGEZREVRANGE key start stop [WITHSCORES]返回有序集中指定区间内的成员,按分数从高到低排序。
ZRANGEBYSCOREZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]返回有序集中,分数介于 minmax 之间的成员。支持 WITHSCORES 显示分数和 LIMIT 分页。
ZREMZREM key member [member ...]移除有序集中的一个或多个成员。不存在的成员会被忽略。
ZSCOREZSCORE key member返回有序集中,成员的分数值。如果成员不存在则返回 nil
ZINCRBYZINCRBY key increment member为有序集中的指定成员的分数值加上增量 increment
ZCARDZCARD key获取有序集的成员数量。
ZCOUNTZCOUNT key min max计算有序集中分数介于 minmax 之间的成员数量。
ZPOPMAX/ZPOPMINZPOPMAX key [count] / ZPOPMIN key [count]移除并返回有序集中分数最高/最低的一个或多个成员。
最近更新