示例#1
0
 /**
  * @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('{}'));
 }
示例#2
0
 /**
  * {@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;
 }
示例#3
0
 /**
  * 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);
 }