laravel api 中使用 redis 发布时未收到消息

Riz*_*raf 1 publish-subscribe redis node.js laravel

我使用laravel api 作为后端,vue 作为前端。这些是独立的项目。当我点击 redis 连接后发布的 api 时,例如

$redis = Redis::connection();

$redis->publish('new_message_sent',json_encode($request->all()));
Run Code Online (Sandbox Code Playgroud)

它没有做任何事情。事实上,当我点击 api(使用 postman)并返回 $redis 对象时,它返回一个空对象。

这是订阅的节点服务器代码

io.on("connection", function(socket) {
   console.log("Client Connecteddddd");
   var redisClient = redis.createClient();
   redisClient.subscribe("new_message_sent");


   redisClient.on("new_message_sent", function(channel, message) {
       message = JSON.parse(message);
       console.log(message);    
   });

   redisClient.on("disconnect", function() {
       redisClient.quit();
   });
});
Run Code Online (Sandbox Code Playgroud)

Als*_*rda 7

我偶然发现了类似的情况,我希望我的 Redis 客户端能够收到来自 LaravelRedis外观的已发布消息,但事实并非如此。

我预计跑步时Redis::publish('foo', 'bar')会被接走。SUBSCRIBE fooredis-cli

运行后MONITORredis-cli发现发布的频道名称与我预期的不同 - {app-name}_database_foo

这是在密钥中配置的database.phpredis.options.prefix默认env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'),情况下,了解这一点/更改这一点将会有所帮助。