class Serialization

Handles serialization for cache values.

This class centralizes the serialization logic needed for both regular Redis operations and Lua script ARGV parameters.

Every method requires a RedisConnection parameter to avoid the N+1 pool checkout problem. Serialization methods must not call withConnection() internally: if they acquire their own connection, batch operations such as putMany(1000) would check out 1001 connections instead of 1, causing massive performance degradation.

Methods

__construct(array|bool|null $serializableClasses = null, SerializableClassPolicy|null $serializableClassPolicy = null)

Create a new serialization instance.

mixed
serialize(RedisConnection $connection, mixed $value)

Serialize a value for storage in Redis.

string
serializeForLua(RedisConnection $connection, mixed $value)

Serialize a value for use in Lua script ARGV.

mixed
unserialize(RedisConnection $connection, mixed $value)

Unserialize a value retrieved from Redis.

Details

at line 28
__construct(array|bool|null $serializableClasses = null, SerializableClassPolicy|null $serializableClassPolicy = null)

Create a new serialization instance.

Parameters

array|bool|null $serializableClasses
SerializableClassPolicy|null $serializableClassPolicy

at line 44
mixed serialize(RedisConnection $connection, mixed $value)

Serialize a value for storage in Redis.

When a serializer is configured on the connection, returns the raw value (phpredis will auto-serialize). Otherwise, uses PHP serialization.

Parameters

RedisConnection $connection

The connection to use for serialization checks

mixed $value

The value to serialize

Return Value

mixed

The serialized value

at line 70
string serializeForLua(RedisConnection $connection, mixed $value)

Serialize a value for use in Lua script ARGV.

Unlike regular serialization (which returns raw values when a serializer is configured, expecting phpredis to auto-serialize), Lua scripts require pre-serialized string values in ARGV because phpredis does not automatically serialize Lua ARGV parameters.

This method handles three scenarios:

  1. Serializer configured (igbinary/json/php): Pack with native serialization and compression
  2. No serializer, but compression enabled: PHP serialize, then compress
  3. No serializer, no compression: Just PHP serialize

Parameters

RedisConnection $connection

The connection to use for serialization

mixed $value

The value to serialize

Return Value

string

The serialized value suitable for Lua ARGV

at line 96
mixed unserialize(RedisConnection $connection, mixed $value)

Unserialize a value retrieved from Redis.

When a serializer is configured on the connection, returns the value as-is (phpredis already unserialized it). Otherwise, uses PHP unserialization.

Parameters

RedisConnection $connection

The connection to use for unserialization checks

mixed $value

The value to unserialize

Return Value

mixed

The unserialized value, or null if input was null/false