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 原生的 SETGET 命令。

示例代码:

复制代码
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 实战技巧。

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

相关推荐
南棱笑笑生1 小时前
20260826在Ubuntu22.04系统下编译眺望Pi-RK3572工业派开发板的Ubuntu系统
数据库
仍然.1 小时前
Redis---String
数据库·redis·缓存
码视野1 小时前
基于 Vue3 + Element Plus 的【智慧社区洗车养车与上门流动洗车预约调度系统】设计与实现(含PRD/三端源码/大屏)
前端·javascript·vue.js·人工智能·vue3
tg_xianheyun1 小时前
2026BytePlus CDN加速应用场景全面解析
服务器·数据库·阿里云·云计算·cdn·全球访问优化·云直播
2601_966949651 小时前
如何利用 1 分钟 K 线在 14:50 精准捕捉尾盘异动?Python 量化实战:1 分钟 K 线 + 全市场扫描
开发语言·人工智能·python·量化·quantdash·量化数据源
码视野1 小时前
基于 Vue3 + Element Plus 的【无人值守共享自习室与空间智能预约系统】设计与实现(含PRD/三端源码/大屏)
前端·javascript·vue.js·人工智能·vue3
海天一色y1 小时前
强化学习工具函数详解:从经验回放到优势函数计算
人工智能·python·强化学习
JavaPub-rodert1 小时前
Redis 和 MySQL 如何保证数据一致性?从缓存更新到延迟双删完整讲解
redis·mysql·缓存