‘壹’ php 后台怎么开一个进程监听Redis的队列消息呢用while
redis的subscribe用pconnect链接,执行这个脚本的进程会自动监听所订阅的频道发送的消息
ini_set(‘default_socket_timeout’, -1);
$redis = new \Redis();
$redis->pconnect('127.0.0.1', 6379);
//订阅
$redis->subscribe(['msg'], 'callfun');
function callfun($redis, $channel, $msg)
{
var_mp([
'redis' => $redis,
'channel' => $channel,
'msg' => $msg
]);
}
‘贰’ php predis 怎么使用
一.场景介绍
最近的一个项目需要用到发布/订阅的信息系统,以做到最新实时消息的通知。经查找后发现了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等)希望能帮到你,我还要抓紧时间自己在后盾人自己学习呢,一起努力😊加油吧,(づ ●─● )づ
‘叁’ php redis如何使用
开始在 PHP 中使用 Redis 前,要确保已经安装了 redis 服务及 PHP redis 驱动,且你的机器上能正常使用 PHP。
PHP安装redis扩展
/usr/local/php/bin/phpize #php安装后的路径
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install
修改php.ini文件
vi /usr/local/php/lib/php.ini
增加如下内容:
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-zts-20090626"
extension=redis.so
安装完成后重启php-fpm 或 apache。查看phpinfo信息,就能看到redis扩展。
连接到 redis 服务
<?php
//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//查看服务是否运行
echo "Server is running: " . $redis->ping();
?>
执行脚本,输出结果为:
Connection to server sucessfully
Server is running: PONG
Redis PHP String(字符串) 实例
<?php
//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//设置 redis 字符串数据
$redis->set("tutorial-name", "Redis tutorial");
// 获取存储的数据并输出
echo "Stored string in redis:: " . jedis.get("tutorial-name");
?>
执行脚本,输出结果为:
Connection to server sucessfully
Stored string in redis:: Redis tutorial
Redis PHP List(列表) 实例
<?php
//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
//存储数据到列表中
$redis->lpush("tutorial-list", "Redis");
$redis->lpush("tutorial-list", "Mongodb");
$redis->lpush("tutorial-list", "Mysql");
// 获取存储的数据并输出
$arList = $redis->lrange("tutorial-list", 0 ,5);
echo "Stored string in redis:: "
print_r($arList);
?>
执行脚本,输出结果为:
Connection to server sucessfully
Stored string in redis::
Redis
Mongodb
Mysql
Redis PHP Keys 实例
<?php
//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
echo "Connection to server sucessfully";
// 获取数据并输出
$arList = $redis->keys("*");
echo "Stored keys in redis:: "
print_r($arList);
?>
执行脚本,输出结果为:
Connection to server sucessfully
Stored string in redis::
tutorial-name
tutorial-list
‘肆’ 用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有什么用
速度可以提高很多,因为PHP太过于依赖MYSQL,但是MYSQL连接和读取又浪费太多时间,导致请求非常的慢,知道电脑原理就知道,读取数据,最快的是内存,然后是硬盘。REDIS相当于把数据放在内存里,所以不用MYSQL,而且是在内存里读取更快。
‘陆’ php redis 什么时候用
默认情况下,Redis 服务会提供 16 个数据库,PHPHub 使用 0 号数据库来做缓存,1 号数据库来做会话存储 - Laravel 下配置 Redis 让缓存、Session 各自使用不同的 Redis 数据库_PHPHub
队列的话使用 Beanstalkd
最常用的就是缓存、队列,当然还有很多其它的,如归并计算、去重等。
我根据自己使用Redis的场景及个人最佳实践,整理了一篇文章,redis应用场景与最佳实践
比如网站抢购时,可以使用redis做队列,可以使用redis来代替session功能,还有可以拿redis中的无序集合做socket的客户端id存储。