前言:
首先需要说明的是,Redis的扩展(或者说客户端,redis叫client,php这里叫php driver)不只phpredis一种, 这里(http://redis.io/clients#php)罗列了诸多redis 的第三方扩展,加黄星的就是官方推荐的。但是奇葩的github只能folk源码,而不提供任何编译好的dll(微软对dll有维护)。只顾及linux用户的感受,而在天朝,使用windows搭开发环境的大有人在。
对此,我们只能转向php官方支持。这里可以下到最新的phpclient。注意的是,ts线程安全的是apache对应,而nts是IIS对应。
先说一下我当前的本机环境,作为一个在windows系统环境下开发的苦逼的phper,我使用的是wampserver的继承环境,方便省事。当然还有一些其他的集成环境,比如 phpstudy,xamp,当然还有强大的高可自定义版本的 phpwamp。因为一直用的wampserver,所以对这一款工具比较情有独钟吧~哈哈,再然后向大家推荐的就是phpwamp,这个好在哪里呢?不需要安装,纯绿色,并可实现nginx,apache,php,mysql的多种版本之间的自由搭配,所以也是挺爽的,有时候需要比测一下相应版本的时候,会用一下,挺方便的。
话不多说,我使用的是wampserver 3.0.6 64bit(apache 2.4.23 + php 7.0.10 + mysql 5.7.14)也是比较新版吧!这个里面自带php7和php5.6,相较之前的wamp还是做的不错的。现在开始windows下如何使用?
1、选择redis DLL文件扩展
首先使用phpinfo,打印查看VC版本 还有系统位数 再进行相应版本的下载(这一步很重要,往往不成功,都是因为没有找到对应的版本,刚开始的时候自己也浪费过很多时间,当然,这是一个必须的过程,走过才知道)
先附上phpredis扩展下载地址:http://windows.php.net/downloads/pecl/releases/redis/ (https://pecl.php.net/package/redis )当然网上还有其他提供的,大同小异,找到相应版本即可。

访问该扩展链接地址后,可以看到有好多版本的,


根据之前phpinfo环境信息,选择了上面这一款。
2、将下载好的php_redis.dll 放入D:\software\wamp64\bin\php\php7.0.10\ext 文件夹中(根据自己的路径相应更改),然后再D:\software\wamp64\bin\apache\apache2.4.23\bin\php.ini (实际 php.ini的加载路径,否则扩展也添加不成功)添加代码
extension=php_redis.dll
最后,重新启动服务器即可。
3、再打开phpinfo 搜索redis,就可以看到 php添加成功的redis扩展信息,

phpredis扩展就添加成功了,怎么在php里面使用呢?还需要安装redis服务!
链接地址:https://github.com/MSOpenTech/redis/releases 我选择的是这一款Redis-x64-3.0.504.zip ,解压文件后,即可看到

下载zip文件后解压到创建的文件夹E:\redis ,将这个文件夹地址E:\redis 随后也可以添加到环境变量Path中,这样命令行就可以方便使用了。
然后CMD命令行,我比较喜欢双击执行 redis-server.exe,可以看到

这个时候可以写php文件进行测试
$redis = new Redis();
$redis->connect("127.0.0.1","6379"); //php客户端设置的ip及端口
//存储一个 值
$redis->set("say","Hello World");
echo $redis->get("say"); //应输出Hello World
//存储多个值
$array = array('first_key'=>'first_val',
'second_key'=>'second_val',
'third_key'=>'third_val');
$array_get = array('first_key','second_key','third_key');
$redis->mset($array);
var_dump($redis->mget($array_get));
die;
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//查看服务是否运行
echo "Server is running: " . $redis->ping().'<br>';浏览器运行后,即可看到输出结果:

redis队列简单测试:
1、新建 一个消费者:test.php
<?php
ini_set('memory_limit','2048M'); // 临时设置最大内存占用为3G
set_time_limit(0);
$redisObj = new Redis();
$redisObj->connect("127.0.0.1","6379"); //php客户端设置的ip及端口
while(1)
{
$res = getDataFromRedis($redisObj);
if(! $res)
{
echo date('Y-m-d H:i:s') ."暂时无数据 \n";
sleep(1);
}
}
function getDataFromRedis($redisObj, $number = 50)
{
$taskString = 'TaskQueue';
$queueSize = $redisObj->lsize($taskString);
if($number > $queueSize)
{
$number = $queueSize;
}
$resultArr = array();
$errNum = array();
echo "begin---------------------------------------------------\n";
for($i = 0; $i < $number; $i++)
{
$result = $redisObj->lpop($taskString);
if(false === $result)
{
$errNum[] = $i;
}
else
{
$resultAry[] = $result;
echo date('Y-m-d H:i:s') . $result . "\n";
}
}
if($errNum)
{
$num = count($errNum);
$msgStr = date('Y-m-d H:i:s').' 共失败'.$num.'个';
echo date('Y-m-d H:i:s') . $msgStr . "-----\n";
}
return $resultArr;
}2、新建一个生产者 queue.php
$num = isset($argv[2]) ? $argv[2] : 50;
if(! $num)
{
echo('exit..');
}
$redisObj = new Redis();
$redisObj->connect("127.0.0.1","6379"); //php客户端设置的ip及端口
for($i=0 ; $i< $num; $i++)
{
$rand = mt_rand(1,999999);
$taskString = 'TaskQueue';
if(false === $redisObj->rpush($taskString, $rand))
{
echo date('Y-m-d H:i:s') . 'add fail' ." \r\n";
}
}3、运行
消费者,监听数据
D:\wamp64\www>php test.php
生产者,添加队列
D:\wamp64\www>php queue.php dev 100

到此php redis的扩展安装及使用就此结束!!!
windows下redis服务设置redis开机自启动方法
1、查看一下Redis服务是否注册
1):Win+R快捷键输入services.msc,然后回车或者点击确定
2):win10桌面 此电脑 右键单击(管理->服务与应用程序->服务),此处输入R,即可看到R开头的服务列表(在没有添加服务的情况下是看不到Redis服务的,我这里已经添加了Redis服务,所以会在列表中看到信息)

2、如何添加服务?
找到Redis所在的目录,在下图红框中输入cmd,进入到控制台下的Redis所在目录

此时会出现下图所示内容

在控制台中输入如下命令即可完成Redis服务化
redis-server --service-install redis.windows-service.conf --loglevel verbose
完成上述操作后,就会出现步骤一中服务列表中的Redis标识
下面是Redis常用的操作命令(这些都是需cmd要进入Redis的目录下)
卸载服务:redis-server --service-uninstall 开启服务:redis-server --service-start 停止服务:redis-server --service-stop
redis管道
redis的管道命令 就是减少数据传输时间 让redis服务一次执行多个命令
$redisPipe = $redis->multi(Redis::PIPELINE);
$Lex = ['a','b','c','d','e','f','g','h','i','j','k','l'];
for ( $i=0; $i<100; $i++ ) {
$redisPipe->zAdd('SSet10', $i, $Lex[ceil($i/10)].$i);
}
$result = $redisPipe->exec();Redis - 管道技术 pipeline: https://www.cnblogs.com/frankcui/p/15358577.html
最后附上自己用到的资源,避免链接失效。。哈哈~~~
百度云:链接:https://pan.baidu.com/s/1o9RRnC2 密码:53c7
本文为崔凯原创文章,转载无需和我联系,但请注明来自冷暖自知一抹茶ckhttp://www.cksite.cn