当前位置:首页 » 编程语言 » php关闭redis

php关闭redis

发布时间: 2022-08-28 09:20:24

A. php删除Redis所有数据

1、创建userinfo_update.php,用于查询用户信息,先显示信息,在修改:先通过GET获取用户编号查询用户信息:$sql = "select * from user_info where user_id='".$_GET['userId']."'"; $result = mysql_query($sql,$con);if($row = mysql_fetch_array($result)){}。

B. php怎么使用 redis pub/sub

一.场景介绍
最近的一个项目需要用到发布/订阅的信息系统,以做到最新实时消息的通知。经查找后发现了redis pub/sub(发布/订阅的信息系统)可以满足我的开发需求,而且学习成本和使用成本也比较低。 :grin:
二.什么是redis pub/sub
资料查看
大家在看我的blog的同时可以打开redis官方对于redis pub/sub的介绍,感觉看英文文档吃力的话 :cry: ,可以看redis中文网的翻译介绍.
Pub/Sub功能(means Publish, Subscribe)即发布及订阅功能
1> 基于事件的系统中,Pub/Sub是目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:订阅者(如客户端)以事件订阅的方式表达出它有兴趣接收的一个事件或一类事件;发布者(如服务器)可将订阅者感兴趣的事件随时通知相关订阅者。
2> 消息发布者,即publish客户端,无需独占链接,你可以在publish消息的同时,使用同一个redis-client链接进行其他操作(例如:INCR等)
3> 消息订阅者,即subscribe客户端,需要独占链接,即进行subscribe期间,redis-client无法穿插其他操作,此时client以阻塞的方式等待“publish端”的消息;这一点很好理解,因此subscribe端需要使用单独的链接,甚至需要在额外的线程中使用。
三.redis pub/sub的使用
下面我将配着实图(用我的本地机器环境)来为大家讲解redis的pub/sub怎么去使用 .
没有安装phpredis扩展的或者没有redis服务的,请参考我的另一篇blog,有详细的安装介绍,这里不再赘述了。
1、启动redis服务端:
[caption id="attachment_1777" align="alignnone" width="300"] php redis pub/sub(消息订阅系统)经验总结之一[/caption]
2、新开一个终端,启动redis客户端,并做为subscribe客户端(消息订阅者),订阅一个名字叫test的频道的频道信息:
3、启动redis客户端,并做为publish客户端(消息发布者),发布一个名字叫test的频道,信息是:hello,world
4、再切换到2步骤中的redis客户端窗口,会发现,已经订阅到了刚才发布的 'hello,world'消息:
5、模式匹配订阅
Redis 的Pub/Sub实现支持模式匹配。客户端可以订阅全风格的模式以便接收所有来自能匹配到给定模式的频道的消息。
比如,将接收所有发到 test.name,test.phone,test.address...等等的消息,该这样写:
[shell]PUBSCRIBE test.*[/shell]
在终端回车后,同时再新的窗口里分别发布两个频道的消息,名字分别为:test.name和test.phone,然后切换到订阅端的窗口里,结果如下图所示:
由上图可以看出,在订阅了test.*频道后,一共收到了 test.name和test.phone两个频道的消息,这就是模式匹配订阅。
那么取消订阅匹配该模式的客户端也比较简单:
[shell]PUNSUBSCRIBE test.*[/shell]
6、好,以上的这些简单的demo,就是关于redis pub/sub(Publish/Subscribe,发布/订阅的信息系统)的最基本使用。说了这么多,跟php也没有挂上什么钩,别着急,重要的都往往最后出场。 :lol:
四.php使用redis的pub/sub(发布/订阅的信息系统)
这里我列出一些常用的命令:
phpredis的安装
redis的客户端连接支持多种语言。这里我用的是php的phpredis,它是用c语言编写的,目前已经作为php的一个模块扩展,没有安装的可以参考我的另一篇blog,已经安装的可以忽略此步骤.
命令手册
这里我列出一些常用的:
[shell]Redis::__construct构造函数
$redis = new Redis();
connect, open 链接redis服务
参数
host: string,服务地址
port: int,端口号
timeout: float,链接时长 (可选, 默认为 0 ,不限链接时间)
注: 在redis.conf中也有时间,默认为300
pconnect, popen 不会主动关闭的链接
参考上面
setOption 设置redis模式
getOption 查看redis设置的模式
ping 查看连接状态
get 得到某个key的值(string值)
如果该key不存在,return false
set 写入key 和 value(string值)
如果写入成功,return ture
setex 带生存时间的写入值
$redis->setex('key', 3600, 'value'); // sets key → value, with 1h TTL.
setnx 判断是否重复的,写入值<br />$redis->setnx('key', 'value');
$redis->setnx('key', 'value');
delete 删除指定key的值
返回已经删除key的个数(长整数)
$redis->delete('key1', 'key2');
$redis->delete(array('key3', 'key4', 'key5'));
<span style="font-size: 16px; line-height: 24px;">
[/shell]
更详细的使用请参考这里,我就不写太多,因为我要直接摞代码了. :lol:
publish(消息发布端):pub.php
[php]
/**
* redis sub(消息订阅端)
* @ blog: phping.sinaapp.com
* @date 2016-04-24 15:00
*/
$redis = new Redis();
// 第一个参数为redis服务器的ip,第二个为端口
$res = $redis->connect('127.0.0.1', 6379);
// test为发布的频道名称,hello,world为发布的消息
$res = $redis->publish('test','hello,world');
[/php]
subscribe(消息订阅端): sub.php
[php]
/**
* redis sub(消息订阅端)
* @ blog: phping.sinaapp.com
* @date 2016-04-24 15:00
*/
$redis = new Redis();
$res = $redis->pconnect('127.0.0.1', 6379,0);
$redis->subscribe(array('test'), 'callback');
// 回调函数,这里写处理逻辑
function callback($instance, $channelName, $message) {
echo $channelName, "==>", $message,PHP_EOL;
}
[/php]
开始订阅redis消息
前面已经提到过,消息订阅者,即subscribe客户端,需要独占链接,即进行subscribe期间,redis-client无法穿插其他操作,此时client以阻塞的方式等待“publish端”的消息,所以我们用命令行来执行:
则 订阅消息的redis客户端已经启动,随时等待发布过来的消息并订阅该消息.
发布redis消息
同样,命令行执行消息发布端的脚本即可:
[shell]
php pub.php
[/shell]
切换到消息订阅端的窗口发现终端有输出,如下图:
哈哈,是不是 收到了发布端发布的'hello,world'这条消息呢。
五.总结
在命令执行redis订阅端脚本时,发现在终端会输出:
[shell]
PHPFatalerror: Uncaughtexception'RedisException'withmessage'readerroronconnection'in…
[/shell]
这样的错误是什么原因呢?请看我下一篇blog,本篇主要是讲一些基本的语法,在下一篇我会着重讲解一些在实际开发中遇到过的哪些问题和跳过的哪些坑。。。 :mrgreen:
码字不易,望转载注明出处哈 ;)

C. 在php中 为什么不能使用redis类

redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。
若想在PHP中使用redis,首先要先安装redis。然后在PHP中配置扩展。
安装redis。
首先下载好redis安装文件,解压到D盘或其他盘。
然后通过Dos命令行进行安装。
把这个文件夹复制到其它地方,比如D:\redis 目录下。
打开一个cmd窗口 使用cd命令切换目录到D:\redis 运行 redis-server.exe redis.conf
如果想方便的话,可以把redis的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个redis.conf可以省略,如果省略,会启用默认的。
这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了
切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379

这时候,就已经完成配置了。
完成了配置之后,要在PHP中添加redis的扩展,之后才可以用PHP灵活的使用它。
在windows下安装php的redis扩展非常简单,下载一个.dll扩展包放到php的ext目录下,在php.ini里边添加一行配置就可以了。

php代码测试

redis=newRedis();redis->connect(‘127.0.0.1′,6379);
redis−>set(‘test′,′helloworld!′);echoredis->get(‘test’);

输出hello world!

D. php 命令行模式下redis 无法使用

php
命令行模式使用的php.ini
可能和正常的不是一个,所以,你需要在命令行下执行。
php --ini
看一下加载的ini是否和网页的是一个。如果是一个的话,还有看一下
php.ini
里 extension_dir
的路径,改为绝对路径。
否则将正常的替换到上图
Loaded
Configuration
File
目录。

E. redis的php客户端为什么连接数这么大

我也使用的是这个插件,经过我的测试,这绝对是此redis客户端一个坑爹的设计!因为它居然要自己去关闭连接,关闭连接对php的开发者是一个几乎要遗忘的操作。
因为一般扩展的开发者,都会在脚本结束时自己关闭已经使用的连接,但是这个插件居然没有,而是需要你自己去关闭。当然关闭连接对只对connect函数有效,pconnect是不需要关闭连接的。其具体使用方法就是在脚本结束前调用redis对象的close方法,来关闭连接。

F. php redis 可以使用yeild吗

PHP中redis的使用
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
Redis 是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。
若想在PHP中使用redis,首先要先安装redis。然后在PHP中配置扩展。
1.安装redis。
首先下载好redis安装文件,解压到D盘或其他盘。
然后通过Dos命令行进行安装。
把这个文件夹复制到其它地方,比如D:\redis 目录下。
打开一个cmd窗口 使用cd命令切换目录到D:\redis 运行 redis-server.exe redis.conf如果想方便的话,可以把redis的路径加到系统的环境变量里,这样就省得再输路径了,后面的那个redis.conf可以省略,如果省略,会启用默认的。输入之后,会显示如下界面:
这时候另启一个cmd窗口,原来的不要关闭,不然就无法访问服务端了切换到redis目录下运行 redis-cli.exe -h 127.0.0.1 -p 6379 出现下图:
这时候,就已经完成配置了。
完成了配置之后,要在PHP中添加redis的扩展,之后才可以用PHP灵活的使用它。
在windows下安装php的redis扩展非常简单,下载一个.dll扩展包放到php的ext目录下,在php.ini里边添加一行配置就可以了。

G. php怎么查看redis的key

首先开启redis服务:

  1. 打开cmd命令窗口,将根目录切换至redis根目录;

  2. 开启redis服务:输入命令:redis-server.exe redis.conf 然后回车。

开启成功后,此窗口不要关闭,另打开一个cmd窗口,连接客户端:

1.打开cmd命令窗口,将根目录切换至redis根目录;

2.输入连接命令:redis-cli.exe -h 127.0.0.1 -p 6379 然后回车

3.输入key的查看命令:keys *

H. php 连接redis,怎么判断Redis是否挂掉

一般链接redis,如果链接不上,或者redis挂掉,都会发生超时,你可以设置超时时间短一点,比如5秒。如果5秒链接不上则不连接了,继续往下,不影响整体代码运行。

<?php
$redis=newRedis();
$redis->connect($config['host'],$config['port'],$config['timeout']);
$redis->ping();//检测当前链接状态,返回PONG或者抛出异常。

I. php 怎么关闭redis连接

$this->redis->connect($host, $port,3); 3秒连接超时 $this->redis = new Redis(); $this->redis->connect($host, $port); $this->redis->auth($auth); 这样解决就可以了,简单粗暴

热点内容
诈骗的脚本 发布:2025-01-16 23:51:27 浏览:314
电脑配置有点低怎么玩和平精英 发布:2025-01-16 23:46:14 浏览:818
ipfs分布式服务器是什么币种 发布:2025-01-16 23:32:29 浏览:991
android动态icon 发布:2025-01-16 23:03:12 浏览:605
优酷电脑缓存在哪 发布:2025-01-16 22:58:29 浏览:298
进口途锐哪个配置好 发布:2025-01-16 22:35:24 浏览:962
骨干路由器怎么配置 发布:2025-01-16 22:24:39 浏览:244
途安2021款买哪个配置 发布:2025-01-16 22:21:01 浏览:329
图片的压缩原理 发布:2025-01-16 22:17:15 浏览:493
云服务器本地电脑 发布:2025-01-16 22:17:04 浏览:961