【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 插件才能去连接它。

相关推荐
BingoGo3 小时前
改变 PHP 未来的 RFC Polling API
后端·php
咕噜企业签名分发-淼淼3 小时前
浅谈云服务器在后端托管与签名分发场景中的应用价值
开发语言·php
苏州IT威翰德3 小时前
苏州IT基础架构IQ/OQ/PQ确认服务 | 服务器网络验证
开发语言·php
zgscwxd3 小时前
【.htaccess】URL重写、静态资源缓存、安全防护等
php
TO_WebNow3 小时前
创建webman步骤
php·webman
BingoGo3 小时前
PHP 应用 security.txt 漏洞披露实践
php
JaguarJack3 小时前
PHP 应用 security.txt 漏洞披露实践
后端·php
酉鬼女又兒4 小时前
零基础入门计算机网络:定义、分类与核心性能指标
开发语言·计算机网络·考研·青少年编程·职场和发展·php
isyangli_blog14 小时前
OpenDayLight (Carbon 版本) 启动与组件安装
开发语言·php