public function cacheTagVersions(array $tagNames)
 {
     // array_values here used for reindexing array from 0
     $needToRequest = array_values(array_diff($tagNames, array_keys($this->actualTagVersions)));
     if (count($needToRequest) < 1) {
         return;
     }
     $needToRequestPrefixed = ArrayTools::addPrefixToArrayValues($this->prefix, $needToRequest);
     $newTagVersions = $this->connection()->mget($needToRequestPrefixed);
     $newTagVersions = array_combine($needToRequest, $newTagVersions);
     $flush = [];
     foreach ($newTagVersions as $newTagKey => $newTagVersion) {
         if (!$newTagVersion) {
             $flush[] = $newTagKey;
         }
     }
     $flush = $this->flushTags($flush);
     $this->actualTagVersions = array_merge($this->actualTagVersions, $newTagVersions, $flush);
 }
 public function testAddPrefixToArrayValues()
 {
     $values = [0 => 'aaa', 1 => 'bbb'];
     $prefixedValues = ArrayTools::addPrefixToArrayValues('prefix:', $values);
     $this->assertEquals(['prefix:aaa', 'prefix:bbb'], $prefixedValues);
 }
 /**
  * @param array $keys
  *
  * @return array|void
  */
 public function mget(array $keys)
 {
     $keys = ArrayTools::addPrefixToArrayValues($this->prefix, $keys);
     $data = $this->connection()->mget($keys);
     $data = $this->serializer->deserialize($this->prefix, $data);
     return $data;
 }