Serialization
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
Create a new serialization instance.
Details
at line 28
__construct(array|bool|null $serializableClasses = null, SerializableClassPolicy|null $serializableClassPolicy = null)
Create a new serialization instance.
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.
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:
- Serializer configured (igbinary/json/php): Use pack() which calls _serialize()
- No serializer, but compression enabled: PHP serialize, then compress
- No serializer, no compression: Just PHP serialize
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.