TagAwareMarshaller example

$isRelay = $redis instanceof Relay;
        if ($isRelay || \defined('Redis::OPT_COMPRESSION') && \in_array($redis::class[\Redis::class, \RedisArray::class, \RedisCluster::class], true)) {
            $compression = $redis->getOption($isRelay ? Relay::OPT_COMPRESSION : \Redis::OPT_COMPRESSION);

            foreach (\is_array($compression) ? $compression : [$compression] as $c) {
                if ($isRelay ? Relay::COMPRESSION_NONE : \Redis::COMPRESSION_NONE !== $c) {
                    throw new InvalidArgumentException(sprintf('redis compression must be disabled when using "%s", use "%s" instead.', static::class, DeflateMarshaller::class));
                }
            }
        }

        $this->init($redis$namespace$defaultLifetimenew TagAwareMarshaller($marshaller));
        $this->namespace = $namespace;
    }

    protected function doSave(array $values, int $lifetime, array $addTagData = [], array $delTagData = []): array
    {
        $eviction = $this->getRedisEvictionPolicy();
        if ('noeviction' !== $eviction && !str_starts_with($eviction, 'volatile-')) {
            throw new LogicException(sprintf('Redis maxmemory-policy setting "%s" is *not* supported by RedisTagAwareAdapter, use "noeviction" or "volatile-*" eviction policies.', $eviction));
        }

        // serialize values
doClear as private doClearCache;
        doSave as private doSaveCache;
    }

    /** * Folder used for tag symlinks. */
    private const TAG_FOLDER = 'tags';

    public function __construct(string $namespace = '', int $defaultLifetime = 0, string $directory = null, MarshallerInterface $marshaller = null)
    {
        $this->marshaller = new TagAwareMarshaller($marshaller);
        parent::__construct('', $defaultLifetime);
        $this->init($namespace$directory);
    }

    public function prune(): bool
    {
        $ok = $this->doPrune();

        set_error_handler(static function D) {});
        $chars = '+-ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';

        
Home | Imprint | This part of the site doesn't use cookies.