You are here

protected function CacheBase::createEntryHash in Redis 8

Create cache entry.

Parameters

string $cid:

mixed $data:

int $expire:

string[] $tags:

Return value

array

2 calls to CacheBase::createEntryHash()
PhpRedis::set in src/Cache/PhpRedis.php
Stores data in the persistent cache.
Predis::set in src/Cache/Predis.php
Stores data in the persistent cache.

File

src/Cache/CacheBase.php, line 360

Class

CacheBase
Base class for redis cache backends.

Namespace

Drupal\redis\Cache

Code

protected function createEntryHash($cid, $data, $expire, array $tags) {

  // Always add a cache tag for the current bin, so that we can use that for
  // invalidateAll().
  $tags[] = $this
    ->getTagForBin();
  assert(Inspector::assertAllStrings($tags), 'Cache Tags must be strings.');
  $hash = [
    'cid' => $cid,
    'created' => round(microtime(TRUE), 3),
    'expire' => $expire,
    'tags' => implode(' ', $tags),
    'valid' => 1,
    'checksum' => $this->checksumProvider
      ->getCurrentChecksum($tags),
  ];

  // Let Redis handle the data types itself.
  if (!is_string($data)) {
    $hash['data'] = $this->serializer
      ->encode($data);
    $hash['serialized'] = 1;
  }
  else {
    $hash['data'] = $data;
    $hash['serialized'] = 0;
  }
  if (Settings::get('redis_compress_length', 0) && strlen($hash['data']) > Settings::get('redis_compress_length', 0)) {
    $hash['data'] = @gzcompress($hash['data'], Settings::get('redis_compress_level', 1));
    $hash['gz'] = TRUE;
  }
  return $hash;
}