Laravel8设置REDIS_PREFIX后订阅消息无效?

嗨前桌
  • 91

描述

我设置了Laravel的REDIS_PREFIX=test_prefix_,它在存储key的时候确实自动转化为了test_prefix_key的格式,但我也因此不能在应用中使用redis的订阅功能。

过程和相关代码

.env
//.env
REDIS_PREFIX=test_prefix_
Commonds/RedisSubscribe.php
// Commonds/RedisSubscribe.php

public function handle()
    {
        Redis::psubscribe(['channel.*'], function ($message) {
            $this->output->writeln($message);
        });
    }
redis-cli
redis-cli>publish channel.1 hello

当我在redis客户端发布一个hello消息时,在另一个redis客户端使用psubscribe订阅channel.*是可以得到hello消息的,但是在应用中却不能。

Console报错信息不明确,如下:

我将REDIS_PREFIX改为等于空,则应用中的订阅也能正常工作。

我不太理解前缀是如何影响订阅的,有人清楚原因是什么吗?我该如何在使用前缀的情况下正确使用应用的订阅呢?

回复
阅读 427
1 个回答

加前缀

       这儿也是一个键, 对应redis的 test_prefix_channel.*
       Redis::psubscribe(['channel.*'], function ($message) {
            $this->output->writeln($message);
        });

另外你用redis命令MONITOR 看一下就知道原因了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
你知道吗?

宣传栏