Redis 数据类型概览

Redis 不止是 key-value,它的 value 还分成多种数据类型,每种类型都有专属命令与适用场景。写代码前先想清楚「用什么类型存」,往往比写多少行代码更重要。

键值模型

Redis 是键值数据库,key 为字符串,value 是不同类型的数据:

SET article:1001:title "Redis 入门"   # String 类型
HSET user:1001 name zhangsan age 18  # Hash 类型
RPUSH todo:list "买菜" "写代码"       # List 类型

同前缀 key 常用来表达业务分组,如 user:1001 表示用户 1001 的数据。

数据类型全景

Redis 数据类型全景 常用数据类型一览:

类型命令前缀底层形态一句话用途
StringSET/GET字符串/整数缓存、计数器、Session
HashHSET/HGET哈希表对象/结构化字段
ListLPUSH/RPUSH双向链表消息队列、时间线
SetSADD/SMEMBERS哈希表去重、交并差集合运算
ZSetZADD/ZRANGE跳表+哈希排行榜、按分数排序
BitmapSETBIT/GETBIT位数组签到、在线状态
HyperLogLogPFADD/PFCOUNT基数估计海量去重计数
GEOGEOADD/GEOSEARCH基于 ZSet附近的人/门店
StreamXADD/XREAD日志流可靠消息队列

后四种可看作基于前几种的扩展能力,本教程第 06~10 章先讲五种核心类型。

如何选择类型

按业务形态对号入座:

  • 单个值、计数、防重令牌 → String
  • 一个对象的多个字段 → Hash
  • 有序追加、按序消费 → List
  • 去重、共同好友、标签 → Set
  • 要排序的集合、TopN → ZSet
  • 位状态统计(签到 30 天)→ Bitmap

选错类型的典型后果:用 String 存对象 JSON,改一个字段要整串读写,远不如 Hash 灵活。

通用键操作

所有类型的 key 都适用同一套键命令:

KEYS *            # 列出所有键(生产禁用,见第 11 章)
TYPE user:1001    # 查看键类型
# 输出:hash
EXISTS user:1001  # 是否存在
# 输出:(integer) 1
DEL user:1001     # 删除键

小结

Redis 通过多种 value 类型把「数据库」扩展成了「数据结构服务器」。本章先建立全貌:String/Hash/List/Set/ZSet 是核心五种,Bitmap/HyperLogLog/GEO/Stream 是扩展能力。下一步逐章上手每种类型的命令。

笔记加载中…