Defer
    
            
            in package
            
        
    
    
    
This is a helper class for transactions. It will optimize the write going out and take care of rolling back.
Optimizations will be:
- multiple set() values (with the same expiration) will be applied in a single setMulti()
- for a set() followed by another set() on the same key, only the latter one will be applied
- same for an replace() followed by an increment(), or whatever operation happens on the same key: if we can pre-calculate the end result, we'll only execute 1 operation with the end result
- operations before a flush() will not be executed, they'll just be lost
Rollback strategy includes:
- fetching the original value of operations prone to fail (add, replace & cas) prior to executing them
- executing said operations before the others, to minimize changes of interfering concurrent writes
- if the commit fails, said original values will be restored in case the new value had already been stored
This class must never receive invalid data. E.g. a "replace" can never follow a "delete" of the same key. This should be guaranteed by whatever uses this class: there is no point in re-implementing these checks here. The only acceptable conflicts are when cache values have changed outside, from another process. Those will be handled by this class.
Tags
Table of Contents
Methods
- __construct() : mixed
- __destruct() : mixed
- add() : mixed
- cas() : mixed
- clear() : mixed
- Clears all scheduled writes.
- commit() : bool
- Commit all deferred writes to cache.
- decrement() : mixed
- delete() : mixed
- deleteMulti() : mixed
- flush() : mixed
- increment() : mixed
- replace() : mixed
- set() : mixed
- setMulti() : mixed
- touch() : mixed
Methods
__construct()
    public
                    __construct(KeyValueStore $cache) : mixed
    Parameters
- $cache : KeyValueStore
__destruct()
    public
                    __destruct() : mixed
    Tags
add()
    public
                    add(string $key, mixed $value, int $expire) : mixed
    Parameters
- $key : string
- $value : mixed
- $expire : int
cas()
    public
                    cas(mixed $originalValue, string $key, mixed $value, int $expire) : mixed
    Parameters
- $originalValue : mixed
- 
                    No real CAS token, but the original value for this key 
- $key : string
- $value : mixed
- $expire : int
clear()
Clears all scheduled writes.
    public
                    clear() : mixed
    commit()
Commit all deferred writes to cache.
    public
                    commit() : bool
    When the commit fails, no changes in this transaction will be applied (and those that had already been applied will be undone). False will be returned in that case.
Return values
booldecrement()
    public
                    decrement(string $key, int $offset, int $initial, int $expire) : mixed
    Parameters
- $key : string
- $offset : int
- $initial : int
- $expire : int
delete()
    public
                    delete(string $key) : mixed
    Parameters
- $key : string
deleteMulti()
    public
                    deleteMulti(array<string|int, string> $keys) : mixed
    Parameters
- $keys : array<string|int, string>
flush()
    public
                    flush() : mixed
    increment()
    public
                    increment(string $key, int $offset, int $initial, int $expire) : mixed
    Parameters
- $key : string
- $offset : int
- $initial : int
- $expire : int
replace()
    public
                    replace(string $key, mixed $value, int $expire) : mixed
    Parameters
- $key : string
- $value : mixed
- $expire : int
set()
    public
                    set(string $key, mixed $value, int $expire) : mixed
    Parameters
- $key : string
- $value : mixed
- $expire : int
setMulti()
    public
                    setMulti(array<string|int, mixed> $items, int $expire) : mixed
    Parameters
- $items : array<string|int, mixed>
- $expire : int
touch()
    public
                    touch(string $key, int $expire) : mixed
    Parameters
- $key : string
- $expire : int