Redis 从了解到精通(一・上):量化开发必学的三大基础数据类型

【量化学习专栏】前文我们聊透了 Redis 的核心优势,以及它为什么是量化交易系统的 "标配组件"------ 微秒级的内存读写、天然的原子性、丰富的数据结构,完美适配行情缓存、订单队列、持仓统计等高频低延时场景。

从本篇开始,我们进入实操阶段,逐个拆解 Redis 的核心数据类型。Redis 支持的数据结构非常多,但对于量化开发而言,90% 的业务场景都可以通过 5 种基础类型实现。本文作为系列第一篇的上篇,先详解 String、Hash、List 三种类型,从基础概念、常用命令到量化场景落地,一文讲透。

一、Redis 数据类型总览

Redis 作为内存型键值数据库,除了基础的核心类型,还提供了多种高级数据结构与能力,覆盖不同业务场景:

  • 基础核心类型:string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)
  • 高级扩展类型:位图(Bitmaps)、HyperLogLogs(基数统计)、地理空间(Geospatial)
  • 消息相关能力:发布 / 订阅(Pub/Sub)、流(Streams)
  • 自定义扩展:支持动态加载模块,扩展自定义功能

其中前 5 种基础类型是量化开发的重中之重,覆盖了绝大多数量化业务场景。本篇我们先讲解前三种:String、Hash、List,剩余两种将在下篇展开。

二、String 字符串类型

2.1 基础概念

string 是 Redis 最基础的数据类型,逻辑非常简单:一个 key 对应一个 value,结构和 Memcached 完全一致。

它最核心的特性是二进制安全 ------ 也就是说 Redis 的 string 可以存储任意格式的数据,普通文本、整数、浮点数、序列化对象,甚至 jpg 图片这类二进制文件,都可以直接存储。 单个 string 类型的 value 最大支持 512MB 存储空间,完全满足日常量化场景的需求。

2.2 量化典型应用场景

String 是量化系统中使用最频繁的基础类型:

  • 行情快照存储:以股票 / 合约代码为 key,存储最新成交价、买一卖一价等实时数据
  • 原子计数统计:当日下单次数、策略触发次数、接口调用次数等计数场景
  • 单值配置存储:系统参数、接口令牌、开关状态等单一配置项

2.3 核心常用命令

命令 功能说明
SET key value 设置指定键的值
GET key 获取指定键的值
INCR key 将键的整数值原子自增 1
DECR key 将键的整数值原子自减 1
APPEND key value 将内容追加到键对应的值末尾

2.4 实操示例

基础用法示例:

bash 复制代码
# 设置键对应的值
127.0.0.1:6379> SET runoob "菜鸟教程"
OK

# 获取键对应的值
127.0.0.1:6379> GET runoob
"菜鸟教程"

量化场景示例:

bash 复制代码
# 存储贵州茅台最新价格
127.0.0.1:6379> SET stock:600519:price 1688.88
OK

# 读取最新价格
127.0.0.1:6379> GET stock:600519:price
"1688.88"

# 当日下单次数原子自增
127.0.0.1:6379> INCR order:count:today
(integer) 1

注意:单个键的 value 最大存储上限为 512MB,不建议使用 Redis 存储大体积二进制文件。

三、Hash 哈希类型

3.1 基础概念

Redis hash 是 field(字段)- value(值) 的映射集合,可以理解成一个 "嵌套的微型键值库"------ 一个主 key 下面,挂载多个独立的字段和对应的值。

它非常适合存储结构化对象:相比把对象序列化后用 string 存储,hash 支持单独修改某一个字段,不需要重写整个对象,性能和灵活性都更高。 单个哈希结构最多可以存储 2^32 - 1 个键值对。

3.2 量化典型应用场景

Hash 是量化系统中存储结构化数据的首选:

  • 个股信息存储:一个 key 对应一只股票,字段包含名称、所属行业、市盈率、总股本等
  • 账户持仓信息:一个 key 对应一个交易账户,字段包含可用资金、持仓市值、持仓数量等
  • 策略参数配置:一个 key 对应一套策略,字段包含开仓阈值、止损比例、仓位上限等

3.3 核心常用命令

命令 功能说明
HSET key field value 设置哈希表中指定字段的值
HGET key field 获取哈希表中指定字段的值
HGETALL key 获取哈希表中所有字段和对应的值
HDEL key field 删除哈希表中的一个或多个字段

3.4 实操示例

需要特别注意:Redis 的同一个 key 只能对应一种数据类型。如果之前用 string 类型给 key 赋值,再直接执行 hash 命令会报类型错误,需要先删除原有键。

基础用法示例:

bash 复制代码
# 先设置一个 string 类型的键
127.0.0.1:6379> SET runoob "菜鸟教程"
OK

# 直接对该键执行 hash 命令,触发类型错误
127.0.0.1:6379> HMSET runoob field1 "Hello" field2 "World"
(error) WRONGTYPE Operation against a key holding the wrong kind of value

# 删除原有键,重新以 hash 类型赋值
127.0.0.1:6379> DEL runoob
(integer) 1

# 批量设置哈希字段
127.0.0.1:6379> HMSET runoob field1 "Hello" field2 "World"
OK

# 获取单个字段的值
127.0.0.1:6379> HGET runoob field1
"Hello"
127.0.0.1:6379> HGET runoob field2
"World"

量化场景示例:

bash 复制代码
# 存储个股基础信息
127.0.0.1:6379> HSET stock:600519 name "贵州茅台" industry "白酒" pe 25.6 total_share 12.56
(integer) 4

# 单独读取市盈率字段
127.0.0.1:6379> HGET stock:600519 pe
"25.6"

四、List 列表类型

4.1 基础概念

Redis 列表是按插入顺序排序的字符串列表,底层由双向链表实现,支持从列表的头部(左侧)或尾部(右侧)插入、弹出元素。

它的特点是头尾元素的插入、删除速度极快,中间位置操作性能一般,因此非常适合实现队列、栈这类数据结构。 单个列表最多支持存储 2^32 - 1 个元素。

4.2 量化典型应用场景

List 是量化系统中实现队列的核心选择:

  • 订单处理队列:新订单从尾部入队,消费端从头部出队,实现先进先出的订单处理
  • 行情流水记录:按时间顺序存储逐笔成交、Tick 数据,保留最近 N 条记录
  • 告警消息队列:存储策略告警、系统通知等消息,供消费端处理

4.3 核心常用命令

命令 功能说明
LPUSH key value 将值插入到列表的头部(左侧)
RPUSH key value 将值插入到列表的尾部(右侧)
LPOP key 移出并返回列表的第一个元素(左侧头部)
RPOP key 移出并返回列表的最后一个元素(右侧尾部)
LRANGE key start stop 获取列表指定索引范围内的元素

4.4 实操示例

基础用法示例:

bash 复制代码
# 清空测试键
127.0.0.1:6379> DEL runoob
(integer) 1

# 从左侧依次插入元素
127.0.0.1:6379> LPUSH runoob redis
(integer) 1
127.0.0.1:6379> LPUSH runoob mongodb
(integer) 2
127.0.0.1:6379> LPUSH runoob rabbitmq
(integer) 3

# 查看列表索引 0-2 的元素
127.0.0.1:6379> LRANGE runoob 0 2
1) "rabbitmq"
2) "mongodb"
3) "redis"

可以看到,每次从左侧插入新元素,最后插入的内容会排在列表最前面。

量化场景示例(订单队列):

bash 复制代码
# 订单依次从尾部入队
127.0.0.1:6379> RPUSH order:queue order_001 order_002 order_003
(integer) 3

# 消费端从头部取出最早的订单
127.0.0.1:6379> LPOP order:queue
"order_001"

五、本篇小结

本篇我们讲解了 Redis 三大基础数据类型,对应量化场景的核心用法可以总结为:

  1. String:最简键值结构,适配单值存储、原子计数、行情快照等场景
  2. Hash:字段映射结构,适配结构化对象存储,比如个股信息、账户持仓、策略参数
  3. List:有序链表结构,适配队列、流水记录、消息通知等场景

掌握这三种类型,已经可以覆盖量化系统中大部分基础缓存需求。 在下篇内容中,我们会继续讲解剩余两种核心类型:Set(集合)和 Zset(有序集合),以及它们在量化去重、排行榜、排序统计等场景的落地用法。

如果觉得内容对你有帮助,欢迎点赞、收藏、关注【量化学习】专栏,后续持续更新 Redis 量化实战内容。

相关推荐
you鬰1 小时前
datawhale--llm-algo-leetcode0️⃣
python
IT学长编程1 小时前
计算机毕业设计 基于用户评论主题挖掘的旅游景点推荐系统 Python 大数据毕业设计 Hadoop毕业设计选题【附源码+文档报告+安装调试】
大数据·python·django·毕业设计·数据可视化分析·旅游景点推荐系统·基于用户评论主题挖掘
内蒙深海大鲨鱼1 小时前
5.Introduction to PyTorch YouTube Series--visualable train
人工智能·pytorch·python
weixin_471383032 小时前
17 Self-RAG —— 幻觉检测 + 答案质量评估
python·agent
叠层归一研究院2 小时前
如何用程序搭建一个 AGI 种子系统(三):生长如何对接物理与数学宇宙
人工智能·python·算法·机器学习·transformer·agi
jufeng13072 小时前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 5 篇】
python·ai agent·上下文压缩
AndrewHZ2 小时前
图像处理入门008 | 阶段总结:环境测试与基础概念测验
图像处理·python·opencv·计算机视觉·cv
北斗落凡尘2 小时前
LangGraph 入门实战(10)--时光回溯
python·langchain
今天AI了吗2 小时前
Agent & AI 名词大扫盲
数据库·人工智能·python·sql·rust