Predis to v2.2.2

This commit is contained in:
the-djmaze 2024-04-08 16:29:55 +02:00
parent 9510347d3a
commit 969dca5f7e
449 changed files with 22013 additions and 2 deletions

View file

@ -0,0 +1,31 @@
<?php
/*
* This file is part of the Predis package.
*
* (c) 2009-2020 Daniele Alessandri
* (c) 2021-2023 Till Krüss
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Predis\Command\Redis\TopK;
use Predis\Command\Command as RedisCommand;
/**
* @see https://redis.io/commands/topk.add/
*
* Adds an item to the data structure.
* Multiple items can be added at once.
* If an item enters the Top-K list, the item which is expelled is returned.
* This allows dynamic heavy-hitter detection of items being entered or expelled from Top-K list.
*/
class TOPKADD extends RedisCommand
{
public function getId()
{
return 'TOPK.ADD';
}
}

View file

@ -0,0 +1,30 @@
<?php
/*
* This file is part of the Predis package.
*
* (c) 2009-2020 Daniele Alessandri
* (c) 2021-2023 Till Krüss
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Predis\Command\Redis\TopK;
use Predis\Command\Command as RedisCommand;
/**
* @see https://redis.io/commands/topk.incrby/
*
* Increase the score of an item in the data structure by increment.
* Multiple items' score can be increased at once.
* If an item enters the Top-K list, the item which is expelled is returned.
*/
class TOPKINCRBY extends RedisCommand
{
public function getId()
{
return 'TOPK.INCRBY';
}
}

View file

@ -0,0 +1,41 @@
<?php
/*
* This file is part of the Predis package.
*
* (c) 2009-2020 Daniele Alessandri
* (c) 2021-2023 Till Krüss
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Predis\Command\Redis\TopK;
use Predis\Command\Command as RedisCommand;
/**
* @see https://redis.io/commands/topk.info/
*
* Returns number of required items (k), width, depth and decay values.
*/
class TOPKINFO extends RedisCommand
{
public function getId()
{
return 'TOPK.INFO';
}
public function parseResponse($data)
{
$result = [];
for ($i = 0, $iMax = count($data); $i < $iMax; ++$i) {
if (array_key_exists($i + 1, $data)) {
$result[(string) $data[$i]] = $data[++$i];
}
}
return $result;
}
}

View file

@ -0,0 +1,68 @@
<?php
/*
* This file is part of the Predis package.
*
* (c) 2009-2020 Daniele Alessandri
* (c) 2021-2023 Till Krüss
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Predis\Command\Redis\TopK;
use Predis\Command\Command as RedisCommand;
/**
* @see https://redis.io/commands/topk.list/
*
* Return full list of items in Top K list.
*/
class TOPKLIST extends RedisCommand
{
public function getId()
{
return 'TOPK.LIST';
}
public function setArguments(array $arguments)
{
if (!empty($arguments[1])) {
$arguments[1] = 'WITHCOUNT';
}
parent::setArguments($arguments);
$this->filterArguments();
}
public function parseResponse($data)
{
if ($this->isWithCountModifier()) {
$result = [];
for ($i = 0, $iMax = count($data); $i < $iMax; ++$i) {
if (array_key_exists($i + 1, $data)) {
$result[(string) $data[$i]] = $data[++$i];
}
}
return $result;
}
return $data;
}
/**
* Checks for the presence of the WITHCOUNT modifier.
*
* @return bool
*/
private function isWithCountModifier(): bool
{
$arguments = $this->getArguments();
$lastArgument = (!empty($arguments)) ? $arguments[count($arguments) - 1] : null;
return is_string($lastArgument) && strtoupper($lastArgument) === 'WITHCOUNT';
}
}

View file

@ -0,0 +1,29 @@
<?php
/*
* This file is part of the Predis package.
*
* (c) 2009-2020 Daniele Alessandri
* (c) 2021-2023 Till Krüss
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Predis\Command\Redis\TopK;
use Predis\Command\Command as RedisCommand;
/**
* @see https://redis.io/commands/topk.query/
*
* Checks whether an item is one of Top-K items.
* Multiple items can be checked at once.
*/
class TOPKQUERY extends RedisCommand
{
public function getId()
{
return 'TOPK.QUERY';
}
}

View file

@ -0,0 +1,47 @@
<?php
/*
* This file is part of the Predis package.
*
* (c) 2009-2020 Daniele Alessandri
* (c) 2021-2023 Till Krüss
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Predis\Command\Redis\TopK;
use Predis\Command\Command as RedisCommand;
/**
* @see https://redis.io/commands/topk.reserve/
*
* Initializes a TopK with specified parameters.
*/
class TOPKRESERVE extends RedisCommand
{
public function getId()
{
return 'TOPK.RESERVE';
}
public function setArguments(array $arguments)
{
switch (count($arguments)) {
case 3:
$arguments[] = 7; // default depth
$arguments[] = 0.9; // default decay
break;
case 4:
$arguments[] = 0.9; // default decay
break;
default:
parent::setArguments($arguments);
return;
}
parent::setArguments($arguments);
}
}