windows下安装php7的redis扩展

        前言:

        首先需要说明的是,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  )当然网上还有其他提供的,大同小异,找到相应版本即可。

冷暖自知一抹茶ck

        

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

        冷暖自知一抹茶ck

        冷暖自知一抹茶ck

        根据之前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扩展信息,

冷暖自知一抹茶ck


        phpredis扩展就添加成功了,怎么在php里面使用呢?还需要安装redis服务!

        链接地址:https://github.com/MSOpenTech/redis/releases 我选择的是这一款Redis-x64-3.0.504.zip ,解压文件后,即可看到

        冷暖自知一抹茶ck

        

        下载zip文件后解压到创建的文件夹E:\redis  ,将这个文件夹地址E:\redis   随后也可以添加到环境变量Path中,这样命令行就可以方便使用了。

        然后CMD命令行,我比较喜欢双击执行 redis-server.exe,可以看到

        冷暖自知一抹茶ck


        这个时候可以写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>';

        浏览器运行后,即可看到输出结果:

冷暖自知一抹茶ck


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

冷暖自知一抹茶ck

        到此php redis的扩展安装及使用就此结束!!!




windows下redis服务设置redis开机自启动方法

        1、查看一下Redis服务是否注册

        1):Win+R快捷键输入services.msc,然后回车或者点击确定

        2):win10桌面  此电脑 右键单击(管理->服务与应用程序->服务),此处输入R,即可看到R开头的服务列表(在没有添加服务的情况下是看不到Redis服务的,我这里已经添加了Redis服务,所以会在列表中看到信息)

        

冷暖自知一抹茶ck

        2、如何添加服务?

        找到Redis所在的目录,在下图红框中输入cmd,进入到控制台下的Redis所在目录

        

冷暖自知一抹茶ck

        此时会出现下图所示内容

        

冷暖自知一抹茶ck

        在控制台中输入如下命令即可完成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

冷暖自知一抹茶ck
请先登录后发表评论
  • 最新评论
  • 总共0条评论