📊 Redis 数据类型

深入了解 Redis 的五种基本数据类型

Redis 数据类型概述

Redis 支持五种基本数据类型:字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合(Sorted Set)。每种数据类型都有其特定的使用场景和操作命令。

🔤 字符串(String)

字符串是 Redis 最基本的数据类型,一个键最大能存储 512MB 的数据。

特性:

  • 二进制安全,可以存储任何数据
  • 支持数值操作(递增、递减)
  • 支持位操作
  • 最大长度 512MB
常用命令示例:
SET key "Hello World"
GET key
INCR counter
DECR counter
APPEND key " Redis"

使用场景:

  • 缓存用户信息
  • 计数器(访问量、点赞数)
  • 分布式锁
  • 会话存储

🗂️ 哈希(Hash)

哈希是一个键值对集合,特别适合存储对象。

特性:

  • 类似于关系数据库的表结构
  • 节省内存空间
  • 支持单个字段的操作
  • 每个哈希可以存储 2^32 - 1 个字段
常用命令示例:
HSET user:1 name "张三" age 25
HGET user:1 name
HMSET user:2 name "李四" age 30 city "北京"
HGETALL user:1
HDEL user:1 age

使用场景:

  • 存储用户信息
  • 存储商品信息
  • 配置信息管理
  • 购物车数据

📋 列表(List)

列表是简单的字符串列表,按照插入顺序排序,支持双端操作。

特性:

  • 有序的字符串列表
  • 支持头部和尾部插入/删除
  • 支持范围查询
  • 最多可包含 2^32 - 1 个元素
常用命令示例:
LPUSH mylist "world"
LPUSH mylist "hello"
RPUSH mylist "redis"
LRANGE mylist 0 -1
LPOP mylist
RPOP mylist

使用场景:

  • 消息队列
  • 最新动态列表
  • 任务队列
  • 历史记录

🎯 集合(Set)

集合是字符串的无序集合,不允许重复元素。

特性:

  • 无序且唯一
  • 支持集合运算(交集、并集、差集)
  • 快速的成员检测
  • 最多可包含 2^32 - 1 个元素
常用命令示例:
SADD myset "hello"
SADD myset "world"
SADD myset "hello"  # 重复元素不会被添加
SMEMBERS myset
SISMEMBER myset "hello"
SINTER set1 set2  # 交集

使用场景:

  • 标签系统
  • 好友关系
  • 权限管理
  • 去重处理

🏆 有序集合(Sorted Set)

有序集合是集合的升级版,每个元素都关联一个分数,按分数排序。

特性:

  • 有序且唯一
  • 每个元素关联一个分数
  • 支持范围查询
  • 支持分数范围操作
常用命令示例:
ZADD leaderboard 100 "player1"
ZADD leaderboard 200 "player2"
ZADD leaderboard 150 "player3"
ZRANGE leaderboard 0 -1 WITHSCORES
ZREVRANGE leaderboard 0 2  # 前三名

使用场景:

  • 排行榜
  • 优先级队列
  • 时间线
  • 范围查询

数据类型选择指南

选择建议:

  • String:简单的键值存储,计数器,缓存
  • Hash:存储对象,减少内存使用
  • List:需要保持顺序的数据,队列操作
  • Set:需要去重的数据,集合运算
  • Sorted Set:需要排序的数据,排行榜