Windows: 准备使用PhpRedis和Predis
我将尝试使用PhpRedis和Predis两种方法来操作Redis。
环境
-
- Windows 10 (64bit)
-
- XAMPP 7.1.4 (PHP 7.1.4)
- PHPのアーキテクチャ: 32bit
安装Redis
首先,您需要安装基于Redis的原始版本。
在Windows上安装Redis – Qiita
如果不进行特殊设置,主机应该是 127.0.0.1,端口应该是 6379。
另外,安装完成后 Redis 已经在运行。
如果错误地关闭了 Redis,我认为通过在 Windows 服务中启动 Redis 要比运行 redis-server –service-start 命令减少多余的窗口更好。
安装一个GUI工具
尝试使用Redis桌面管理器- Qiita
GUI仍然很方便。
现在只需完成连接即可。
PhpRedis: PhpRedis是一个PHP的扩展模块。
GitHub – phpredis/phpredis:Redis的PHP扩展
首先,我們試試PECL擴展模塊PhpRedis。
获取DLL文件
PHP:在Manual中安装PHP扩展模块至Windows。
在Windows中,有两种方法可以加载PHP扩展模块。一种是在编译时将其组合到PHP中,另一种是作为DLL进行加载。推荐使用编译好的扩展模块加载方法,这样更简单。
在中国本土,可以从以下位置获取DLL文件。目前,最新版本似乎是3.1.3。
http://windows.php.net/downloads/pecl/releases/redis/
我根据自己的环境下载了php_redis-3.1.3-7.1-ts-vc14-x86.zip文件。
在版本号3.1.3之后的7.0和7.1是PHP的版本。
通过phpinfo()下面的以下项目可以区分其是否是ts(线程安全)或nts(非线程安全),以及x86或x64。
启用PhpRedis
先把获取到的php_redis.dll文件移动到C:\xampp\php\ext目录下。
然后在php.ini文件中追加以下内容后,重新启动Apache服务。
C:\xampp\php\php.ini 可以被改写为:C盘\xampp\php\php.ini。
extension=php_redis.dll
如果在phpinfo()函数的结果中添加了以下内容,那么表示成功。
如果在记录日志中未添加Redis条目并出现以下错误的情况下,可能是获取了错误的DLL。
我也安装了x64版本的DLL并报错了。
我从未关注过PHP是32位还是64位…。
C:\xampp\apache\logs\error.log 可汗的题目太难
PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\xampp\\php\\ext\\php_redis.dll'
确认动作
如果端口使用默认的6379,则可以省略connect()函数的参数。可以在此处查看示例1:https://github.com/phpredis/phpredis#example-1
<?php
$redis = new Redis();
$redis->connect('127.0.0.1');
$redis->set('foo', 'こんにちはこんにちは!!');
echo $redis->get('foo'); // こんにちはこんにちは!!
我将通过RDM进行确认。请按Ctrl+R重新加载。
此外,建议您选择纯文本格式来显示数值。
将会话处理程序更改为Redis。
使用与之前相同的$_SESSION,可以更改会话的存储位置。
您可以在https://github.com/phpredis/phpredis#php-session-handler上找到更多相关信息。
C:\xampp\php\php.ini 可以改为: C盘\xampp\php\php.ini。
session.save_handler=redis
session.save_path="tcp://127.0.0.1:6379"
然后,重新启动Apache并执行以下操作。
<?php
session_start();
$_SESSION['bar'] = 'Hello World!';
echo $_SESSION['bar']; // Hello World!
在RDM中确认时,给出了一个长的键名:PHPREDIS_SESSION:onfdvajno0mfi6iim76jmge3kd,其值为bar|s:12:”Hello World!”。
根据下述内容,似乎可以通过用冒号分隔键名进行层次化。 key值存储 – Redis键名中的冒号有什么作用 – Stack Overflow
在PhpRedis的README中,写着默认情况下使用的是PHPREDIS_SESSION:作为前缀。
前缀(字符串,默认为“PHPREDIS_SESSION:”):用作存储会话的Redis键的前缀。键由前缀和会话ID组成。
预先存在的
GitHub – nrk/predis: 灵活且功能齐全的PHP和HHVM Redis客户端
Predis的安装可以很容易地通过Composer进行。
使用Composer进行安装
PowerShell:PowerShell
> composer require predis/predis
确认动作
<?php
require_once __DIR__.'/vendor/autoload.php';
Predis\Autoloader::register();
$client = new Predis\Client();
$client->set('baz', '東京特許許可局');
echo $client->get('baz'); // 東京特許許可局
Predis似乎不能使用$_SESSION,但由于Predis主要用于Laravel,所以我认为这不是个问题。