如何在laravel facade redis中使用redis“memory usage keyname”命令?我们可以使用除内存命令以外的所有命令

vngu2lb8  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(410)

我们可以在laravel中使用以下命令。

$user = Redis::get('user:profile:'.$id); 
$values = Redis::lrange('names', 5, 10);
$values = Redis::command('lrange', ['name', 5, 10]);

但不能使用 memory usage keyname 命令与拉威尔redis门面。

fkvaft9z

fkvaft9z1#

简短的回答不,你不能执行。让我解释一下;

public function createCommand($commandID, array $arguments = array())
{
    $commandID = strtoupper($commandID);

    if (!isset($this->commands[$commandID])) {
        throw new ClientException("Command '$commandID' is not a registered Redis command.");
    }

    $commandClass = $this->commands[$commandID];
    $command = new $commandClass();
    $command->setArguments($arguments);

    if (isset($this->processor)) {
        $this->processor->process($command);
    }

    return $command;
}

此方法在调用方法时使用,它使用此抽象方法来决定是否可以调用方法。

abstract protected function getSupportedCommands();
``` `getSupportedCommands` 方法如下所示;

public function getSupportedCommands()
{
return array(
/* ---------------- Redis 1.2 ---------------- */

    /* commands operating on the key space */
    'EXISTS'                    => 'Predis\Command\KeyExists',
    'DEL'                       => 'Predis\Command\KeyDelete',
    'TYPE'                      => 'Predis\Command\KeyType',
    'KEYS'                      => 'Predis\Command\KeyKeys',
    'RANDOMKEY'                 => 'Predis\Command\KeyRandom',
    'RENAME'                    => 'Predis\Command\KeyRename',
    'RENAMENX'                  => 'Predis\Command\KeyRenamePreserve',
    'EXPIRE'                    => 'Predis\Command\KeyExpire',
    'EXPIREAT'                  => 'Predis\Command\KeyExpireAt',
    'TTL'                       => 'Predis\Command\KeyTimeToLive',
    'MOVE'                      => 'Predis\Command\KeyMove',
    'SORT'                      => 'Predis\Command\KeySort',
    'DUMP'                      => 'Predis\Command\KeyDump',
    'RESTORE'                   => 'Predis\Command\KeyRestore',
    ....
    ...
    ..

``` memory usage 命令在此方法中不可用。你可以查一下 /vendor/predis/predis/src/Profile/RedisVersion300.php 或者其他班级的学生 Profile 文件夹-未在其中定义。
原因是 memory usage 方法自redis版本起可用 4.0.0 . 这个软件包在redis版本之前都支持命令 3.0.0 从类名如 RedisVersion240 , RedisVersion300 等。

相关问题