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 实战技巧。

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

相关推荐
n 55!w !10820 小时前
MySQL数据库笔记整理1
数据库·笔记·mysql
夏天要喝冰可乐20 小时前
Codex 写 Three.js 大屏实录:800 行代码,和一条画反的弧线
前端·aigc
李兆龙的博客20 小时前
从一到无穷大 #104:面向 SSD 的数据库写入设计——从 FTL 到应用协同
数据库·ssd·存储引擎
大泽九章20 小时前
XSS入门:存储型、反射型、DOM型,用Flask全复现
python·网络安全·flask
class心平气和20 小时前
ADB 工具函数 Python 使用教程
开发语言·python·adb
欣欣之王来了21 小时前
v-bind语法糖::属性名的简写方式
前端·学习·架构·项目·vue3教程
千桐科技21 小时前
qData 数据中台开源版 v1.6.4 发布:聚焦使用反馈,功能细节与产品体验持续优化
数据库·开源·qdata
小小张说故事21 小时前
Python 里 is 和 == 到底差在哪?拆开小整数池、字符串驻留与 0ns 身份比较
python
程序员清风21 小时前
缓存、索引与数据结构的工程选择
数据结构·spring·缓存
2601_9540056221 小时前
# ricon SVG 编辑器:工业图元的“军火工厂“
前端·物联网·数学建模·架构·编辑器·制造