Redis Client 从了解到精通(二)上:redis-py 高级用法与核心命令实战

前言

上一期我们详细讲解了 Redis 的 Client API 对于量化工作的重要性,也带大家走完了 Python 版 redis-py 客户端的安装与基础使用流程。本期我们正式深入核心,系统拆解 redis-py 的高级用法与实战技巧,手把手吃透这个高频使用的 Redis 客户端库。


一、前置环境准备

在开始实操之前,先把运行环境配置到位,确保后续所有代码都能正常跑通。

1.1 运行依赖要求

redis-py 的正常运行需要满足两个基础条件:

  • 存在一个已启动、可正常访问的 Redis 服务实例
  • 本地 Python 环境版本不低于 3.7

1.2 redis-py 安装

直接使用 Python 官方包管理工具 pip 即可一键安装,执行以下命令:

复制代码
pip install redis

二、两种快速连接 Redis 的方式

安装完成后,我们可以根据 Redis 的部署场景,选择对应的连接方式,这里给大家介绍两种最常用的写法。

2.1 本地默认连接

如果你的 Redis 服务部署在本机,且使用默认配置(地址 localhost、端口 6379),直接初始化 Redis 对象即可:

复制代码
import redis
r = redis.Redis()
r.ping()

执行 r.ping() 返回 True,就代表服务连接成功。

2.2 远程 / 自定义配置连接

如果 Redis 是远程部署,或者修改了默认端口、地址,就需要在连接时手动指定参数。 例如服务地址为 foo.bar.com,运行端口为 12345,连接写法如下:

复制代码
import redis
r = redis.Redis(host='foo.bar.com', port=12345)
r.ping()

连接成功后,我们就可以通过这个连接对象,执行各类 Redis 数据操作命令了。


三、redis-py 核心命令详解

redis-py 对 Redis 绝大多数原生命令都做了封装,覆盖常规数据操作、哨兵高可用架构、Redis 集群管理等全场景。其中最核心的就是 redis.commands.core.CoreCommands 类,它承载了大部分常用操作的实现逻辑。

接下来我们以最常用的 String(字符串)类型为例,拆解核心操作函数的具体用法。

3.1 基础读写:set /get 命令

这是最基础的键值对操作,完全对应 Redis 原生的 SET 和 GET 命令。

示例代码:

复制代码
import redis
# decode_responses=True:自动将返回的字节类型解码为Python字符串,省去手动decode步骤
r = redis.Redis(decode_responses=True)

# 写入键值对,对应 Redis 原生 SET 命令
r.set('mykey', 'thevalueofmykey')

# 读取键对应的值,对应 Redis 原生 GET 命令
r.get('mykey')

关键参数说明:

  • decode_responses=True :非常实用的连接参数,开启后 Redis 返回的 bytes 类型数据会自动解码为 Python 字符串,不用每次手动调用 decode() 方法。
  • r.set():对应 Redis 原生 SET 命令,用于设置一个键值对。
  • r.get():对应 Redis 原生 GET 命令,用于读取指定 key 关联的值。

3.2 批量读取:mget 命令

如果需要一次性读取多个 key 的值,用 mget 比循环调用 get 效率高得多 ------ 它只需要一次网络 IO 就能完成,大幅降低了网络通信开销。

  • 对应原生命令:MGET key1 key2 key3...
  • 核心功能:批量获取多个指定 key 的值
  • 入参规则:可以传入列表 / 元组形式的 key 集合,也可以直接传入多个 key 作为独立参数
  • 返回值:返回一个列表,值的顺序与传入 key 的顺序完全对应;如果某个 key 不存在,列表对应位置会返回 None

示例代码:

复制代码
# 传入列表形式
r.mget(["k1", "k2", "k3"])

# 也可以直接传入多个独立参数
r.mget("k1", "k2", "k3")

文末说明

本期我们梳理了 redis-py 的环境搭建、两种连接方式,以及 String 类型的核心基础操作。后续我们还会继续拆解更多数据类型的高级用法、哨兵与集群操作,以及量化场景下的 Redis 实战技巧。

风险提示:量化交易存在市场风险,本文仅做技术知识分享,不构成任何投资建议。

相关推荐
hweiyu003 小时前
Redis命令:HSTRLEN
redis·缓存
阳光九叶草LXGZXJ3 小时前
达梦数据库-报错-15-列【XXX】长度超出定义
linux·运维·数据库·sql·学习
怕浪猫4 小时前
RAG 面试 6 连问,从原理到优化全部覆盖
python·算法·面试
高洁014 小时前
具身智能中的世界模型训练
人工智能·python·深度学习·机器学习·transformer
无线通信科研笔记4 小时前
IEEE TVT 2026 论文精读与完整复现|相位误差如何重塑近场 RIS 的幅相响应
论文阅读·人工智能·python·算法·论文笔记
字节渡客4 小时前
Redis键明明过期了,业务还在读到旧数据
数据库·redis·spring
朝朝辞暮i4 小时前
VLA 系统学习第 1 课:VLA 到底在干什么?
人工智能·python·计算机视觉·vla
To_OC5 小时前
从一头雾水到跑通全流程:我用一个周末啃透了JWT登录鉴权
前端·后端·http
2601_962885725 小时前
如何用 Python 自动识别股票的支撑位与压力位?
开发语言·python
北冥有鱼被烹5 小时前
VCSEL全景解析:与光模块NPO CPO的关系、市场量化分析与产业链影响
python