Я согласен с ответом от zacherates.
Но вы можете сделать вызов intern () в ваших нелиберальных строках.
Из примера zacherates:
// ... but they are not the same object
new String("test") == "test" ==> false
Если вы ставите нелитеральное равенство строки, это правда
new String("test").intern() == "test" ==> true
Вы должны сделать Redis-кеш сервисом, а потом внедрить его в свои контроллеры (или других зависимых). При необходимости обратитесь к документам Symfony о внедрении зависимостей .
Вот пример, вам, возможно, потребуется настроить его позже:
# config/services.yaml
services:
redis_connection:
class: 'RedisConnection'
factory: ['RedisAdapter', createConnection]
arguments:
- '%env(REDIS_URL)%'
redis_cache:
class: 'RedisCache'
arguments:
- '@redis_connection'
Обратите внимание, что я не знаю, какие пространства имен имеют ваши классы, поэтому вам придется настроить конфиг соответственно.
И тогда вам также нужно будет настроить среду для внедрения службы в ваши контроллеры (или другие иждивенцы):
# config/services.yaml
services:
# ...
App\Controller\ExampleController:
arguments:
- '@logger'
- '@redis_cache'
Кроме того, вы должны обновить контроллеры для принятия нового аргумента в конструкторе например:
public function __construct(LoggerInterface $logger, RedisCache $cache)
{
$this->logger = $logger;
$this->cache = $cache;
}
Если у вас есть какие-либо вопросы, обратитесь к документации по контейнера услуг .