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]返回有序集中,分数介于 min 和 max 之间的成员。支持 WITHSCORES 显示分数和 LIMIT 分页。
ZREMZREM key member [member ...]移除有序集中的一个或多个成员。不存在的成员会被忽略。
ZSCOREZSCORE key member返回有序集中,成员的分数值。如果成员不存在则返回 nil。
ZINCRBYZINCRBY key increment member为有序集中的指定成员的分数值加上增量 increment。
ZCARDZCARD key获取有序集的成员数量。
ZCOUNTZCOUNT key min max计算有序集中分数介于 min 和 max 之间的成员数量。
ZPOPMAX/ZPOPMINZPOPMAX key [count] / ZPOPMIN key [count]移除并返回有序集中分数最高/最低的一个或多个成员。
最近更新