/**
  * Prepend data to an existing item.
  *
  * This method should throw an error if it is used with compressed data. This is an expected behavior.
  * Memcached casts the value to be prepended to the initial value to the type of the initial value. Be
  * careful as this leads to unexpected behavior at times. For instance, prepending (float) 45.23 to
  * (int) 23 will result in 45, because the value is first combined (45.2323) then cast to "integer"
  * (the original value), which will be (int) 45. Due to how memcached treats types, the behavior has been
  * mimicked in the internal cache to produce similar results and improve consistency. It is recommend
  * that prepends only occur with data of the same type.
  *
  * @link    http://www.php.net/manual/en/memcached.prepend.php
  *
  * @param   string    $key          The key under which to store the value.
  * @param   string    $value        Must be string as prepending mixed values is not well-defined.
  * @param   string    $group        The group value prepended to the $key.
  * @param   string    $server_key   The key identifying the server to store the value on.
  * @param   bool      $byKey        True to store in internal cache by key; false to not store by key
  * @return  bool                    Returns TRUE on success or FALSE on failure.
  */
 public function prepend($key, $value, $group = 'default', $server_key = '', $byKey = false)
 {
     if (!is_string($value) && !is_int($value) && !is_float($value)) {
         return false;
     }
     $derived_key = $this->buildKey($key, $group);
     // If group is a non-Memcached group, prepend to runtime cache value, not Memcached
     if (in_array($group, $this->no_mc_groups)) {
         if (!isset($this->cache[$derived_key])) {
             return false;
         }
         $combined = $this->combine_values($this->cache[$derived_key], $value, 'pre');
         $this->add_to_internal_cache($derived_key, $combined);
         return true;
     }
     // Append to Memcached value
     if (false !== $byKey) {
         $result = $this->mc->prependByKey($server_key, $derived_key, $value);
     } else {
         $result = $this->mc->prepend($derived_key, $value);
     }
     // Store in runtime cache if add was successful
     if (Memcached::RES_SUCCESS === $this->getResultCode()) {
         $combined = $this->combine_values($this->cache[$derived_key], $value, 'pre');
         $this->add_to_internal_cache($derived_key, $combined);
     }
     return $result;
 }
 /**
  * @inheritdoc
  */
 public function prependByKey($server_key, $key, $value, $expiration = null)
 {
     $key = $this->prefix . $key;
     return parent::prependByKey($server_key, $key, $value, $expiration);
 }