【Memurai】 Redis 缓存,引入 predis/predis 纯 PHP 库

一句话回答你

你可以只操作 composer require predis/predis但前提是你的电脑上已经有一个在运行的 Redis 服务

如果没有,那 Predis 这个 PHP 库连谁去?它就是个客户端,必须有个 Redis 服务器端才能工作。

打个比方:

  • Redis 服务 = 银行金库(存钱的地方)

  • predis/predis = 你的银行卡(让 PHP 能存取钱的工具)

  • Composer 引入 predis = 在 PHP 里办了一张银行卡

你现在只办了卡,但金库还没盖,钱没地方存。所以 Redis 服务是必须单独安装的,这和 PHP 扩展无关,是两个不同的东西。

回答你原来的疑问:

"使用 Composer 引入 predis/predis 纯 PHP 库,无需安装扩展"

这个说法完全正确,但它指的是不需要给 PHP 装一个 C 写的 redis 扩展 (php_redis.dll)。

没说的是,Redis 服务器本身还是要有,就像你用 PDO 不需要装 mysql 扩展,但 MySQL 服务必须安装和运行一样。

所以,别被字面绕进去。装个 Redis 服务 + composer 引入 predis,万事大吉。

第一步:让 Redis 服务跑起来(二选一,比之前更简单)
  1. 最简单的方法:下载 Memurai(合法的 Windows Redis 替代品)

    • 直接去 Download Memurai for Windows | Memurai 下载开发者版。

    • 像安装普通软件一样下一步,默认端口 6379,什么配置都不用改。

    • 装完它就在后台运行了,开机自动启动。

Download Memurai for Windows | Memurai

Download Memurai for Windows | Memurai

1. 先确认 Memurai 的服务正在运行

打开命令提示符,输入:

cmd

复制

下载

复制代码
netstat -ano | findstr :6379

如果看到一行 TCP 127.0.0.1:6379 LISTENING,说明 Redis 服务已启动,端口正在监听,这是最重要的。

如果没有任何输出,说明服务没跑起来,需要去"服务"管理器启动 Memurai 服务,或重启电脑。

4. 终极验证(跳过命令行工具)

你其实不需要 cmd 里的 redis-cli 也能确认服务正常。直接用 PHP predis 测试即可,这比什么都准。

创建一个 PHP 文件(比如 test.php),写入:

复制代码
<?php
require 'vendor/autoload.php';

try {
    $redis = new Predis\Client([
        'scheme' => 'tcp',
        'host'   => '127.0.0.1',
        'port'   => 6379,
    ]);
    $redis->set('hello', 'work');
    echo $redis->get('hello'); // 应该输出 work
} catch (Exception $e) {
    echo '连接失败: ' . $e->getMessage();
}

现在总结一下你目前的状态:

  • Redis 服务 (Memurai)在 127.0.0.1:6379 正常运行

  • predis 客户端通过 Composer 正确安装

  • ✅ PHP 可以成功连接 Redis 并进行读写

2. 学习更多 Redis 命令(通过 predis 方法)

目的 predis 方法示例
设置带过期时间的缓存 $redis->setex('key', 3600, 'value')
删除缓存 $redis->del('key')
检查 key 是否存在 $redis->exists('key')
递增/递减 $redis->incr('counter') / decr()
Hash 操作 $redis->hset('user:1001', 'name', 'Tom')

你现在的缓存系统已经"活"了,可以自由地读写 Redis。需要我帮你设计具体的缓存场景(比如缓存全站配置、Session 共享、排行榜)随时说,我会帮你写出对应的代码。

第二步:在你的 PHP 项目里
复制代码
composer require predis/predis

然后写代码:

复制代码
<?php
require 'vendor/autoload.php';

$redis = new Predis\Client([
    'scheme' => 'tcp',
    'host'   => '127.0.0.1',
    'port'   => 6379,
]);
$redis->set('test', 'hello redis');
echo $redis->get('test');

这样就能正常用了。

2. 用记事本编辑配置文件

右键单击 memurai.conf,选择 "用记事本打开" (或"打开方式" -> "记事本")。

搜索关键词 requirepass,你会看到这一行(默认被注释):

复制代码
# requirepass foobared

把前面的 # 去掉,把 foobared 换成你自己的密码,例如:

复制代码
requirepass MyStr0ngP@ssword

保存文件并关闭

3. 重启 Memurai 服务

打开 Windows 服务管理器:Win + R -> 输入 services.msc -> 回车。

在列表中找到 Memurai 服务,右键选择 "重新启动"

方法一:以管理员身份运行记事本(推荐,最简单)

  1. Win 键,输入 记事本(或 Notepad)。

  2. 在搜索结果上右键 ,选择 "以管理员身份运行"

  3. 在记事本里点 文件 → 打开,路径输入:

    复制代码
    C:\Program Files\Memurai\memurai.conf

    点"打开",现在就可以编辑并保存了。

    'tcp', 'host' => '127.0.0.1', 'port' => 6379, 'password' => $redisPassword, // 密码认证 ]); // 测试写入和读取 $redis->set('hello', 'Redis 带密码也正常工作了!'); echo $redis->get('hello') . PHP_EOL; } catch (Exception $e) { echo '连接或操作失败: ' . $e->getMessage() . PHP_EOL; }

提供的 config/redis.php 是一个 PHP 配置文件

如果你是在原生 PHP 中使用 Predis(非框架)

对应的 Predis 客户端初始化代码则是:

复制代码
return [
    'host'     => '127.0.0.1',
    'port'     => 6379,
    'password' => '1234569aaa',   // 在这里写上密码
    'database' => 0,
    'timeout'  => 2.5,
];

前提条件(再提醒一下)

这个密码必须与你在 memurai.confrequirepass 设置的完全一致,且修改配置后已重启 Memurai 服务。否则连接会认证失败。

在 Redis 里,database 指的是逻辑数据库的编号,不是 MySQL 那种数据库。

Redis 默认有 16 个逻辑数据库 ,编号从 015

配置中的 'database' => 0 表示连接后默认使用 0 号数据库


你可以把它理解为"不同的命名空间"

  • 不同编号的数据库之间数据完全隔离

  • 比如,0 号库存放业务缓存,1 号库存放 Session 数据,互不影响。

  • 切换数据库用 SELECT 1 命令,Predis 里也可以调用 $redis->select(1)


一般情况下,保持 0 即可

除非你有明确的隔离需求(比如多个应用共用一个 Redis 实例),否则不用改它,默认 0 号库完全够用。

注意 :Redis Cluster 模式不支持多个数据库,只能使用 0 号库。

这个不能替代 Redis 服务。

Redis for VS Code 是一个 VS Code 的图形化管理插件 ,它只是让你在编辑器里查看和操作 Redis 数据的工具。

打个比方:它相当于数据库的管理客户端(如 Navicat),而不是数据库服务器本身。

你必须先有一个正在运行的 Redis 服务(如 Memurai、Docker Redis 或 Windows 版 Redis),然后这个 VS Code 插件才能去连接它。

相关推荐
两个人的幸福2 天前
Windows 桌面应用自研 PHP 队列(下):完整代码与六大工程化优化
php
BingoGo4 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
JaguarJack4 天前
PHP 泛型之殇 泛型 RFC 提案被拒绝
后端·php
用户3074596982075 天前
PHP 扩展——从入门到理解
php
鹏仔先生6 天前
拷贝漫画APP下载页PHP程序,后台带免费AI写作
php
云水一下6 天前
从零开始学 PHP 系列(一):PHP 的前世今生与开发环境搭建
开发语言·php
xingpanvip6 天前
星盘接口开发文档:本命盘接口指南
android·开发语言·css·php·lua
酉鬼女又兒6 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php
dog2506 天前
不要再继续优化 TCP
网络协议·tcp/ip·php
Channing Lewis6 天前
PHP 解析 Excel 的那些坑:一次“行号错位”引发的数据丢失
开发语言·php·excel