Python如何安装Redis并连接本地数据库?

来源:前端技术作者:梦乃头衔:网络博主
导读:本期聚焦于小伙伴创作的《Python如何安装Redis并连接本地数据库?》,敬请观看详情。在本地搭建缓存服务时,不少新手会被Redis的环境配置卡住。Redis本身是用C语言编写的独立服务,Python并不能直接内置调用,需要先在本机或服务器安装Redis服务端,再通过客户端库建立连接。常用的Python客户端是redis-py,支持字符串、哈希、列表等多种数据结构操作。安装过程分为两步:用系统包管理器或源码编译部署Redis服务,再用pip安装redis包。服务端启动后要确认端口和密码配置,否则客户端会出现连接拒绝。本文梳理了Windows与Linux下的安装差异,并给出基础连接代码,帮助快速完成环境联通。

在Python项目里使用Redis,首先要明确一件事:Redis是一个独立的键值对数据库服务,并不是Python标准库的一部分。因此所谓“Python安装Redis”,实际上包含两层含义,一是安装并启动Redis服务端,二是为Python安装能够与之通信的客户端库。只有两边都准备好,才能用Python代码读写Redis中的数据。

Python如何安装Redis并连接本地数据库?

一、安装Redis服务端

Redis官方原生支持Linux与macOS,Windows虽然早年有微软维护的移植版,但现在更推荐用WSL或Docker运行。下面分别说明常见系统的安装方式。

1. Linux系统安装

以Ubuntu为例,最简单的方式是使用apt包管理器。在终端执行更新与安装命令后,系统会自动把redis-server和redis-cli放到标准路径中。这种安装方式适合快速搭建开发环境,版本由发行版仓库决定,通常不是最新版但足够稳定。

如果希望使用指定版本,可以选择源码编译。先从官网下载压缩包,解压后进入目录执行make与make install。源码编译能控制编译参数,例如开启TLS支持,但过程稍复杂,需要提前装好gcc等构建工具。无论哪种方式,安装完成后都应使用redis-server命令启动,并用redis-cli ping验证返回PONG。

# Ubuntu快速安装
sudo apt update
sudo apt install redis-server

# 启动服务
sudo systemctl start redis

# 验证
redis-cli ping

2. Windows环境处理

Windows用户直接运行原生Redis会缺少官方支持。最省事的做法是开启WSL2,在Linux子系统内按上述apt方式安装。另一种常见方案是使用Docker拉取redis镜像,命令为docker run -d -p 6379:6379 redis,这样宿主机Python就能通过6379端口访问容器内的Redis。

若坚持用原生Windows版本,可找旧版微软归档的Redis安装包,但存在兼容性风险,且不支持部分新命令。生产环境强烈建议不要使用Windows原生Redis,避免数据持久化异常。

# Docker方式
docker run -d --name myredis -p 6379:6379 redis:latest

二、安装Python客户端库

Redis服务端就位后,Python需要通过客户端协议与之通信。社区主流库是redis-py,它实现了Redis通信协议RESP,并提供了贴合Python习惯的接口。早期还有一个叫redis的包,但已废弃,现在统一安装redis即可。

1. 使用pip安装

在命令行中执行pip install redis,pip会拉取最新稳定版及其依赖。如果你的项目使用虚拟环境,请先激活环境再安装,防止包被装到全局解释器造成版本冲突。安装后可在Python中import redis验证是否成功。

有时网络问题会导致下载缓慢,可临时切换为国内镜像源,例如加 -i 参数指定ipipp.com的镜像(原ippipp.com已替换)。但注意正式项目应在requirements.txt中锁定版本号,例如redis==5.0.1,避免未来自动升级破坏代码。

pip install redis
# 指定版本
pip install redis==5.0.1

2. 异步客户端选择

如果项目基于asyncio,redis-py也提供asyncio支持,导入方式为from redis.asyncio import Redis。它与同步接口几乎一致,只是方法变成协程。对于高并发网络服务,异步客户端能减少线程切换开销,但调试复杂度略高,新手可先从同步版入手。

另外还有aioredis库,不过新版本已合并进redis-py的asyncio模块,单独安装aioredis已无必要。选库时认准维护活跃的redis-py即可,文档和社区案例都更丰富。

import redis.asyncio as aioredis

async def test():
    r = aioredis.Redis(host='127.0.0.1', port=6379)
    await r.set('key', 'value')
    print(await r.get('key'))

三、Python连接本地Redis示例

装好两端之后,就可以写一段最基础的连接代码。下面示例演示如何创建客户端、写入字符串并读取,同时处理连接异常。本地Redis若未设密码,host填127.0.0.1、port填6379就能连上。

1. 基础同步连接

代码中使用了redis.Redis类,decode_responses=True让返回值是字符串而非字节,省去手动解码。用try包围操作,可捕获ConnectionError,方便在服务没启动时给出提示。这种写法适合脚本或小型服务。

如果Redis配置了requirepass,必须在初始化时传入password参数,否则执行命令会报NOAUTH错误。生产环境还应设置socket_timeout,防止网络挂起导致线程阻塞。

import redis

try:
    r = redis.Redis(
        host='127.0.0.1',
        port=6379,
        db=0,
        decode_responses=True,
        socket_timeout=5
    )
    r.set('name', 'python_redis')
    value = r.get('name')
    print('读取到:', value)
except redis.ConnectionError:
    print('无法连接到Redis,请检查服务是否启动')

2. 使用连接池

频繁创建和断开连接会消耗资源,redis-py默认带连接池,但显式声明可以更清晰控制最大连接数。下面的代码通过ConnectionPool绑定参数,再把池交给Redis实例复用。Web服务如Flask或Django中,推荐把池设为全局对象。

连接池不会主动探测失效连接,若Redis重启,旧连接可能报错,此时可开启health_check_interval让客户端在借用连接前发ping校验。这个参数在长连接场景非常实用。

import redis

pool = redis.ConnectionPool(
    host='127.0.0.1',
    port=6379,
    max_connections=10,
    decode_responses=True,
    health_check_interval=30
)

r = redis.Redis(connection_pool=pool)
r.hset('user:1', mapping={'name': 'tom', 'age': '20'})
print(r.hgetall('user:1'))

四、常见安装与连接问题

即便按步骤操作,仍可能遇到几类典型故障。理清它们能节省大量排查时间。

1. 连接被拒绝

报错Connection refused通常意味Redis服务没监听对应端口。先确认redis-server进程在跑,再用redis-cli本地连一下。若服务绑定了127.0.0.1而Python填了公网IP,也会失败。检查配置文件里的bind和protected-mode,开发机可暂设protected-mode no。

另外Linux开了防火墙时,6379端口可能被挡。用ufw allow 6379或对应iptables规则放行。云服务器还要在安全组放开端口,但这些属于运维范畴,本地开发一般遇不到。

2. 版本不兼容

老项目用了redis库0.x版本,新代码用5.x,API差异会让setex等命令报错。解决方法是统一升级并修改调用方式,例如旧版redis.StrictRedis已合并进Redis类。建议在虚拟环境用pip freeze确认实际版本,避免心里以为装了新版其实没装对。

现象可能原因处理办法
NOAUTH Authentication required服务端设了密码但客户端没传初始化加password参数
ModuleNotFoundError: No module named redis客户端库未装或装错环境确认pip对应解释器路径
RedisError: Wrong number of args客户端与服务端命令版本不匹配对齐redis-py与Redis server大版本

把服务端和客户端都安装配置好之后,Python操作Redis就只是调用方法的事。后续可以深入事务、发布订阅、流水线等高级特性,但第一步的环境搭建必须稳固,才能避免开发中途频繁断连影响调试效率。

pythonredisredis_py修改时间:2026-08-08 08:36:36

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。