* - maxKeys : only allow this many keys (using oldest-first eviction)
*/
function __construct( $params = [] ) {
+ $params['segmentationSize'] = $params['segmentationSize'] ?? INF;
parent::__construct( $params );
$this->token = microtime( true ) . ':' . mt_rand();
return $this->bag[$key][self::KEY_VAL];
}
- public function set( $key, $value, $exptime = 0, $flags = 0 ) {
+ protected function doSet( $key, $value, $exptime = 0, $flags = 0 ) {
// Refresh key position for maxCacheKeys eviction
unset( $this->bag[$key] );
$this->bag[$key] = [
}
public function add( $key, $value, $exptime = 0, $flags = 0 ) {
- if ( $this->get( $key ) === false ) {
- return $this->set( $key, $value, $exptime, $flags );
+ if ( $this->hasKey( $key ) && !$this->expire( $key ) ) {
+ return false; // key already set
}
- return false; // key already set
+ return $this->doSet( $key, $value, $exptime, $flags );
}
- public function delete( $key, $flags = 0 ) {
+ protected function doDelete( $key, $flags = 0 ) {
unset( $this->bag[$key] );
return true;
return false;
}
- $this->delete( $key );
+ $this->doDelete( $key );
return true;
}