使用Redis,实时获取消息
环境
Docker 19.03.1
Redis 版本: 5.0.5
ioredis 版本: 1.0.0
phpredis 版本: 5.0.2
Redis 是一种开源的内存数据结构存储系统。
键-值数据库。
每个数据就像一个表一样。
流动
使用php端通过redis进行值的注册,然后在node服务器端实时接收值。
需要注意的是,在php端使用phpredis,在node端使用ioredis。
顺便说一句,Redis相关的任何库基本上都有相同的方法命名(虽然偶尔有些库使用了小驼峰命名方式,但这是可以接受的)。
编程程序
//エンドポイント取得
$path = $_SERVER['REQUEST_URI'];
$redis = new Redis();
$redis->connect('ホスト',ポート);
if ($path === '/send-redis') {
//「test_hoge」チャンネルに向かってパブリッシュ
$redis->publish('hoge_test','Hello world');
}
const Redis = require('ioredis');
(async () => {
console.log('redis起動しました');
const redis = new Redis(ポート, 'ホスト');
redis.subscribe(["hoge_test"]);
redis.on('message', function(channel, message) {
console.log('channel: ' + channel + ', message: ' + message); //channel:hoge_test,message:Hello world
});
redis.disconnect();
})();
结果 (jié guǒ)
当在PHP端以API的方式访问”send-redis”时,
在Node端可以实时获取到消息。
顺便提一下,如果想要使用strams类型的数据,只需使用xadd()即可。(请注意,有些旧的库可能不支持xadd的功能)在这种情况下,获取消息不再是直接的方式,而是将发布作为通知获取stream的时机的存在。