/** * @group disconnected */ public function testExtractKeyTag() { $this->assertEquals('foo:bar', Helpers::extractKeyTag('foo:bar')); $this->assertEquals('foo:', Helpers::extractKeyTag('{foo:}bar')); $this->assertEquals('bar', Helpers::extractKeyTag('foo:{bar}')); $this->assertEquals('foo:bar', Helpers::extractKeyTag('{foo:bar}')); $this->assertEquals('', Helpers::extractKeyTag('foo{}:bar')); $this->assertEquals('', Helpers::extractKeyTag('')); $this->assertEquals('', Helpers::extractKeyTag('{}')); }
/** * {@inheritdoc} */ public function getHash(INodeKeyGenerator $distributor) { if (isset($this->hash)) { return $this->hash; } if ($this->canBeHashed()) { $key = Helpers::extractKeyTag($this->arguments[0]); $this->hash = $distributor->generateKey($key); return $this->hash; } return null; }
/** * Retrieves a connection instance from the cluster using a key. * * @param string $key Key of a Redis value. * @return IConnectionSingle */ public function getConnectionByKey($key) { $hashablePart = Helpers::extractKeyTag($key); $keyHash = $this->distributor->generateKey($hashablePart); return $this->distributor->get($keyHash); }