php连接redis集群
⑴ windows 7 php怎么通过redis扩展使用redis
PHP 7安装Redis扩展
1、php操作第一步就是要安装对应的扩展。在Windows环境下则是对应的.dll文件。Windows环境下由于编译环境不同,对应扩展在选择的时候需要注意当前php的先关信息。可以通过phpinfo()查看。如果可以看到对应的环境,这在选择扩展的时候有用
2、选择对应PHP环境扩展
通过以上图我们可以看到“VC14”和“ts”这样的字样,如果不明白的同学在找对应扩展的时候也一样要找到这样的字样。
3、安装PHP 7扩展
下载php_redis-20160319-ts-vc14-x64.zip之后解压,将解压后的php_redis.dll文件放到php\ext目录下。然后在php.ini末尾添加extension=php_redis.dll。重启Apache服务。再次通过phpinfo()查看,如图表示安装成功
测试例子
1、扩展安装成功之后需要验证下是否可以用。web服务器目录下创建文件输入下面内容:
<?php
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$redis->set('test','hello redis');
echo $redis->get('test');
?>
2、然后在网页上访问,如果有hello redis输入则表示扩展安装成功。
⑵ php 怎么安装redis扩展
1、首先到相应网站下载redis:
下载完成后解压到任意盘符如:D:/redis
里面包括:如图所示。
redis-server.exe:服务程序
redis-check-mp.exe:本地数据库检查
redis-check-aof.exe:更新日志检查
redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的ab 工具).
当然还需要一个:redis.conf(具体内容网上随便搜都会有)
2、启动redis:
用cmd命令进入到redis的根目录,
输入命令:redis-server.exe redis.conf
启动后如图所示:
启动cmd窗口要一直开着,关闭后则Redis服务关闭。
3、这时服务开启着,另外开一个窗口进行,设置客户端:
输入命令:redis-cli.exe -h 192.168.2.168 -p 6379(这个ip自己定哈,6379为redis默认端口)
输入后如图所示:
4、安装redis扩展
首先,查看所用php编译版本V6/V9 在phpinfo()中查看
5、去相应网站下载redis扩展:
如图所示下载对应版本的redis扩展
6、将下载的php_redis.dll放在php扩展目录中(ext),并修改配置文件php.ini
添加 扩展的时候一定要
extension=php_igbinary.dll
extension=php_redis.dll
这个顺序如图:
7、重新启动服务,查看phpinfo(),出现如图表示成功;
8、PHP代码测试
$redis = new Redis();
$redis->connect("192.168.138.2","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_mp($redis->mget($array_get));
⑶ 用phpredis操作redis集群支持publish和subscribe吗
用phpredis操作redis集群支持publish和subscribe
参数可选Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
Redis::MULTI:将多个操作当成一个事务执行
Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证
discard:删除一个事务
返回值
multi(),返回一个redis对象,并进入multi-mode模式,一旦进入multi-mode模式,
以后调用的所有方法都会返回相同的对象,只到exec()方法被调用。
watch, unwatch (代码测试后,不能达到所说的效果)
监测一个key的值是否被其它的程序更改。如果这个key在watch 和 exec (方法)间被修改,
这个 MULTI/EXEC 事务的执行将失败(return false)
unwatch 取消被这个程序监测的所有key
⑷ php 连接redis,怎么判断Redis是否挂掉
一般链接redis,如果链接不上,或者redis挂掉,都会发生超时,你可以设置超时时间短一点,比如5秒。如果5秒链接不上则不连接了,继续往下,不影响整体代码运行。
<?php
$redis=newRedis();
$redis->connect($config['host'],$config['port'],$config['timeout']);
$redis->ping();//检测当前链接状态,返回PONG或者抛出异常。
⑸ thinkphp在控制器连接redis时报错
1.在配置项中定义:
12345'SESSION_TYPE' => 'Redis', //session保存类型'SESSION_PREFIX' => 'sess_', //session前缀'REDIS_HOST' => '127.0.0.1' //REDIS服务器地址'REDIS_PORT' => 6379, //REDIS连接端口号'SESSION_EXPIRE' => 3600, //SESSION过期时间
2.在ThinkPHP\Library\Think\Session\Driver目录下新建Redis.class.php文件
文件内容如下:
<?phpnamespace Think\Session\Driver;class Redis {// Redis连接对象 private $redis;// Session过期时间 private $expire; /** * 打开方法 * @param type $path * @param type $name * @return type */ public function open($path, $name) { $this->expire = C('SESSION_EXPIRE') ? C('SESSION_EXPIRE') : ini_get('session.gc_maxLifetime'); $this->redis = new Redis(); return $this->redis->connect(C('REDIS_HOST'), C('REDIS_PORT')); } /** * 关闭 * @return type */ public function close() { return $this->redis->close(); } /** * 读取 * @param string $id * @return type */ public function read($id) { $id = C('SESSION_PREFIX') . $id; $data = $this->redis->get($id); return $data ? $data : ''; } /** * 写入 * @param string $id * @param type $data * @return type */ public function write($id, $data) { $id = C('SESSION_PREFIX') . $id; return $this->redis->set($id, $data, $this->expire); } /** * 销毁 * @param string $id */ public function destroy($id) { $id = C('SESSION_PREFIX') . $id; $this->redis->delete($id); } /** * 垃圾回收 * @param type $maxLifeTime * @return boolean */ public function gc($maxLifeTime) { return true; }}
memcached的方法和Redis差不多一样!