Как вы отметили :
- это зарезервированный символ в стандарте кэширования PSR-6, на котором построен компонент кэша Symfony.
Если вы хотите сохранить их в своем коде, вы можете написать адаптер, которыйберет ключи и заменяет :
чем-то другим, прежде чем передать его в обычный кэш.
Так, например, вы можете написать адаптер, который выглядит примерно так:
class MyCacheAdapter implements AdapterInterface
{
private $decoratedAdapter;
public function __construct(AdapterInterface $adapter)
{
$this->decoratedAdapter = $adapter;
}
public function getItem($key): CacheItemInterface
{
$key = str_replace(':', '.', $key);
return $this->decoratedAdapter->getItem($key);
}
...
}
ДляВсе остальные методы вы можете просто передать вызов оформленному сервису и вернуть результат.Это немного раздражает, но интерфейс требует этого.
В вашей конфигурации службы вы можете настроить ее следующим образом:
services:
App\Cache\MyCacheAdapter:
decorates: 'Symfony\Component\Cache\Adapter\RedisAdapter'
arguments:
$adapter: '@app.cache.adapter.redis'
Эта конфигурация является лишь грубым наброском как аргумента, так иимена классов должны быть скорректированы.В любом случае с этим служебным украшением ваш адаптер оборачивается вокруг оригинального адаптера redis, а затем, когда вы настраиваете его для использования компонентом кэша, он должен работать нормально, что ваши существующие ключи, такие как some:cache:key25
, будут преобразованыsome.cache.key25
до они передаются в компонент кеша, поэтому до появления сообщения об ошибке.