返回归档
⛑️Redis

Redis-基础数据类型

文章目录

Redis 常用数据类型总览

1. String(字符串)

数据结构

  • int:存储整数值
  • SDS(Simple Dynamic String):存储字符串或二进制数据
  • embstr:存储小于 44 字节(Redis 5.0)的字符串
  • raw:存储大于 44 字节的字符串

常用命令

SET key value          # 设置键值
GET key               # 获取值
INCR key             # 计数器+1
DECR key             # 计数器-1
EXPIRE key seconds   # 设置过期时间

应用场景

  • 缓存对象
  • 计数器(如点赞数、阅读数)
  • 分布式锁
  • 共享 session

Hash

Redis Hash的本质是:

一个 key 下,维护一个 field → value 的字典结构(哈希表)

可以理解为:

  • Hash = 小型的对象存储
  • 每个 field 都是独立的 key
  • 所有 field/value 都是字符串类型(string/binary safe)
user:1
  ├── name: "forrest"
  ├── age: "21"
  └── country: "China"

所以Redis Hash

常用命令

HSET key field value    # 设置字段值
HGET key field         # 获取字段值
HMSET key field1 value1 field2 value2  # 批量设置
HGETALL key           # 获取所有字段和值

应用场景

  • 存储对象数据
  • 购物车系统

3. List(列表)

数据结构

  • Redis 3.2 之后统一使用 quicklist 实现
  • quicklist 是 ziplist 和 linkedlist 的组合

常用命令

LPUSH key value      # 左侧插入
RPUSH key value      # 右侧插入
LPOP key            # 左侧弹出
RPOP key            # 右侧弹出
LRANGE key start stop # 获取指定范围的元素

应用场景

  • 消息队列
  • 最新消息列表
  • 文章列表

4. Set(集合)

数据结构

  • intset(整数集合):当元素都是整数且元素个数小于 512 个时使用
  • hashtable(哈希表):当元素不满足 intset 条件时使用

常用命令

SADD key member      # 添加成员
SREM key member      # 删除成员
SMEMBERS key        # 获取所有成员
SINTER key1 key2    # 交集运算
SUNION key1 key2    # 并集运算

应用场景

  • 好友关系
  • 点赞功能
  • 标签系统
  • 抽奖系统

5. Zset(有序集合)

数据结构

  • ziplist(压缩列表):元素数量小于 128 且值小于 64 字节时使用
  • skiplist(跳跃表)+ hashtable:当元素不满足 ziplist 条件时使用

常用命令

ZADD key score member  # 添加成员和分数
ZRANGE key start stop  # 按分数升序获取范围内的成员
ZRANK key member      # 获取成员排名
ZSCORE key member     # 获取成员分数

应用场景

  • 排行榜
  • 带权重的消息队列
  • 排序系统

6. 特殊数据类型

Bitmap

  • 基于 String 类型的位操作
  • 适用于二值状态统计(如签到、在线状态)

HyperLogLog

  • 用于基数统计
  • 占用空间小,有一定误差率
  • 适用于统计网站 UV 等

GEO

  • 地理位置信息存储
  • 基于 Zset 实现
  • 适用于位置服务(如附近的人)

Stream

  • Redis 5.0 新增的消息队列
  • 支持消费组模式
  • 提供持久化和确认机制