class Serialization

Handles serialization for cache values.

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

IMPORTANT: All methods require a RedisConnection parameter to avoid the N+1 pool checkout problem. Never add methods that call withConnection() internally - if serialization methods acquire their own connection, batch operations like putMany(1000) would checkout 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 $conn, mixed $value)

Serialize a value for storage in Redis.

string
serializeForLua(RedisConnection $conn, mixed $value)

Serialize a value for use in Lua script ARGV.

mixed
unserialize(RedisConnection $conn, 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 $conn, 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 $conn

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 $conn, 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 auto-serialize Lua ARGV parameters.

This method handles three scenarios:

  1. Serializer configured (igbinary/json/php): Use pack() which calls _serialize()
  2. No serializer, but compression enabled: PHP serialize, then compress
  3. No serializer, no compression: Just PHP serialize

Parameters

RedisConnection $conn

The connection to use for serialization

mixed $value

The value to serialize

Return Value

string

The serialized value suitable for Lua ARGV

at line 103
mixed unserialize(RedisConnection $conn, 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 $conn

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